Я пытался написать алгоритм решения судоку, он должен работать следующим образом: выбрать пробел, выбрать число и проверить, возможно ли иметь это число в этом месте, если не выбрать другое число, рекурсивно попытаться найти решение, и если нет возможности вернуться назад, пока вы не найдете его. проблема в том, что эта печать абсолютно ничего, я не знаю, что делать, пожалуйста, помогите.
#include<bits/stdc++.h>
using namespace std;
bool possible(int y,int x,int n,int grid[9][9]){
for(int i=0;i<9;i++){
if(grid[y][i]==n)
return false;
}
for(int i=0;i<9;i++){
if(grid[i][x]==n)
return false;
}
int y0 = y/3;
int x0 = x/3;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(grid[y0+i][x0+j]==n)
return false;
}
}
return true;
}
void display(int grid[9][9]){
for(int y=0;y<9;y++){
for(int x=0;x<9;x++){
cout<<grid[y][x]<<" ";
}
cout<<endl;
}
}
void solve (int grid[9][9]){
for(int y=0;y<9;y++){
for(int x=0;x<9;x++){
if(grid[y][x]==0){
for(int n=1;n<10;n++){
if(possible(y,x,n,grid)){
grid[y][x] = n;
solve(grid);
grid[y][x] = 0;
}
}
return;
}
}
}
display(grid);
}
int main(){
int grid[9][9];
ifstream in ("input.txt");
for(int y=0;y<9;y++){
for(int x=0;x<9;x++){
in>>grid[y][x];
}
}
solve(grid);
}