’ ’ ’
#include
using namespace std;
bool can_place(int mat[9][9], int num, int i, int j){
for(int k=0; k<9; i++){
if(mat[k][j] == num || mat[i][k] == num) return false;
}
int r = (i/3)*3;
int c = (j/3)*3;
for(int k=r; k<r+3; k++){
for(int l=c; l<c+3; l++){
if (mat[k][l] == num) return false;
}
}
return true;
}
bool solve(int mat[9][9], int i, int j){
if (i == 9) return true;
if (j == 9) return solve(mat, i+1, 0);
if(mat[i][j] == 0){
for(int num = 1;num < 10; num++){
if(can_place(mat, num, i, j)){
mat[i][j] = num;
if (solve(mat, i, j+1)) return true;
mat[i][j] = 0;
}
}
return false;
}
else return solve(mat, i, j+1);
}
int main(){
int n; cin>>n;
int mat[9][9];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>mat[i][j];
}
}
if (solve(mat, 0, 0)){
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cout<<mat[i][j]<<" ";
}
cout<<endl;
}
}
else cout<<"-1";
return 0;
}
’ ’ ’
this code is giving me segmentation fault and is getting dumped. I am not able to understand this. please help.