I have been continuously trying the sudoku solver by the method taught in class but there is no output.
Here is the code
#include
#include
using namespace std;
bool canplace(int arr[][10],int i,int j,int n,int x)
{
for(int k=0;k<n;k++)
{
if(arr[i][k]==x or arr[k][j]==x)
return false;
}
int rn;
rn=int(sqrt(n));
int sx=(i/rn)*rn;
int sy=(i/rn)*rn;
for(int a=sx;a<sx+rn;a++)
{
for(int b=sy;b<sy+rn;b++)
{
if(arr[a][b]==x){
return false;
}
}
}
return true;
}
bool solvesudoku(int arr[][10],int i,int j,int n)
{
if(i==n)
{
for(int a=0;a<n;a++)
{
for(int b=0;b>n;b++)
{
cout<<arr[a][b]<<" ";
}
cout<<endl;
}
return true;
}
if(j==n){
return solvesudoku(arr,i+1,0,n);
}
if(arr[i][j]!=0){
return solvesudoku(arr,i,j+1,n);
}
for(int x=1;x<=n;x++)
{
if(canplace(arr,i,j,n,x))
{
arr[i][j]=x;
if(solvesudoku(arr,i,j+1,n))
{
return true;
}
}
}
arr[i][j]=0;
return false;
}
int main() {
int n;
cin>>n;
int arr[10][10];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>arr[i][j];
}
}
solvesudoku(arr,0,0,n);
return 0;
}
Please help!!
