fork download
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. bool canPlace(int matrix[][9],int i, int j ,int n, int number){
  5. for(int x=0;x<n;x++){
  6. if(matrix[x][i]==number||matrix[i][x]==number){
  7. return false;
  8. }
  9. }
  10. //subgrid
  11. int rn =sqrt(n);
  12. int sx = (i/rn)*rn;
  13. int sy = (j/rn)*rn;
  14.  
  15. for(int x=sx;x<sx+rn;x++){
  16. for(int y=sy;y<sy+rn;y++){
  17. if(matrix[x][y]==number){
  18. return false;
  19. }
  20. }
  21. }
  22. return true;
  23. }
  24. bool solveSudoku(int matrix[][10],int i, int j, int n){
  25. //base case
  26. if(i==n){
  27. //print the matrix
  28. for(int i=0;i<n;i++){
  29. for(int j=0;j<n;j++){
  30. cout<<matrix[i][j];
  31. }
  32. cout<<endl;
  33. }
  34. return true;
  35. }
  36. //case row ends
  37. if(j==n){
  38. return solveSudoku(matrix,i+1,0,n);
  39. }
  40. //skip the pre filled cells
  41. if(matrix[i][j]!=0){
  42. return solveSudoku(matrix,i,j+1,n);
  43. }
  44. //rec case
  45. //fill the current cell with possible options
  46. for(int number=1;number<=n;number++){
  47. if(canPlace(matrix,i,j,n,number)){
  48. //assume
  49. matrix[i][j]=number;
  50.  
  51. bool couldWeSolve = solveSudoku(matrix,i,j+1,n);
  52. if(couldWeSolve){
  53. return true;
  54. }
  55. }
  56. //backtrack
  57. matrix[i][j]=0;
  58. }
  59.  
  60. return false;
  61. }
  62. int main(){
  63.  
  64. int matrix[9][9] = {5,3,0,0,7,0,0,0,0},
  65. {6,0,0,1,9,5,0,0,0},
  66. {0,9,8,0,0,0,0,6,0},
  67. {8,0,0,0,6,0,0,0,3},
  68. {4,0,0,8,0,3,0,0,1},
  69. {7,0,0,0,2,0,0,0,6},
  70. {0,6,0,0,0,0,2,8,0},
  71. {0,0,0,4,1,9,0,0,5},
  72. {0,0,0,0,8,0,0,7,9};
  73. solveSudoku(matrix,0,0,9);
  74.  
  75.  
  76. return 0;}
  77.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘bool solveSudoku(int (*)[10], int, int, int)’:
prog.cpp:47:21: error: cannot convert ‘int (*)[10]’ to ‘int (*)[9]’
         if(canPlace(matrix,i,j,n,number)){
                     ^~~~~~
prog.cpp:4:19: note:   initializing argument 1 of ‘bool canPlace(int (*)[9], int, int, int, int)’
 bool canPlace(int matrix[][9],int i, int j ,int n, int number){
               ~~~~^~~~~~~~~~~
prog.cpp: In function ‘int main()’:
prog.cpp:65:24: error: expected unqualified-id before ‘{’ token
                        {6,0,0,1,9,5,0,0,0},
                        ^
prog.cpp:65:43: error: expected primary-expression before ‘,’ token
                        {6,0,0,1,9,5,0,0,0},
                                           ^
prog.cpp:66:24: error: expected primary-expression before ‘{’ token
                        {0,9,8,0,0,0,0,6,0},
                        ^
prog.cpp:66:43: error: expected primary-expression before ‘,’ token
                        {0,9,8,0,0,0,0,6,0},
                                           ^
prog.cpp:67:24: error: expected primary-expression before ‘{’ token
                        {8,0,0,0,6,0,0,0,3},
                        ^
prog.cpp:67:43: error: expected primary-expression before ‘,’ token
                        {8,0,0,0,6,0,0,0,3},
                                           ^
prog.cpp:68:24: error: expected primary-expression before ‘{’ token
                        {4,0,0,8,0,3,0,0,1},
                        ^
prog.cpp:68:43: error: expected primary-expression before ‘,’ token
                        {4,0,0,8,0,3,0,0,1},
                                           ^
prog.cpp:69:24: error: expected primary-expression before ‘{’ token
                        {7,0,0,0,2,0,0,0,6},
                        ^
prog.cpp:69:43: error: expected primary-expression before ‘,’ token
                        {7,0,0,0,2,0,0,0,6},
                                           ^
prog.cpp:70:24: error: expected primary-expression before ‘{’ token
                        {0,6,0,0,0,0,2,8,0},
                        ^
prog.cpp:70:43: error: expected primary-expression before ‘,’ token
                        {0,6,0,0,0,0,2,8,0},
                                           ^
prog.cpp:71:24: error: expected primary-expression before ‘{’ token
                        {0,0,0,4,1,9,0,0,5},
                        ^
prog.cpp:71:43: error: expected primary-expression before ‘,’ token
                        {0,0,0,4,1,9,0,0,5},
                                           ^
prog.cpp:72:24: error: expected primary-expression before ‘{’ token
                        {0,0,0,0,8,0,0,7,9};
                        ^
prog.cpp:73:17: error: cannot convert ‘int (*)[9]’ to ‘int (*)[10]’
     solveSudoku(matrix,0,0,9);
                 ^~~~~~
prog.cpp:24:22: note:   initializing argument 1 of ‘bool solveSudoku(int (*)[10], int, int, int)’
 bool solveSudoku(int matrix[][10],int i, int j, int n){
                  ~~~~^~~~~~~~~~~~
stdout
Standard output is empty