Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. #include<fstream>
  2. #include<cstdlib>
  3. using namespace std;
  4. ifstream fin("sudoku.in");
  5. ofstream fout("sudoku.out");
  6. int a[25][25],n=9,m=9,i,j,l[100],c[100],t;
  7. int valid(int k)
  8. {
  9. for(j=1;j<=m;j++)//difera de toate elementele de pe linia l[k]
  10. if(a[l[k]][j]==a[l[k]][c[k]]&&j!=c[k])
  11. return 0;
  12. for(i=1;i<=n;i++)//difera de toate elementele de pe coloana c[k]
  13. if(a[i][c[k]]==a[l[k]][c[k]]&&i!=l[k])
  14. return 0;
  15. for(i=(l[k]-1)/3*3+1;i<=(l[k]-1)/3*3+3;i++)
  16. for(j=(c[k]-1)/3*3+1;j<=(c[k]-1)/3*3+3;j++)
  17. if(a[i][j]==a[l[k]][c[k]]&&i!=l[k]&&j!=c[k])
  18. return 0;
  19. return 1;
  20. }
  21. void bkt(int k)
  22. {
  23. int i;
  24. for(i=1;i<=9;i++)
  25. {
  26. a[l[k]][c[k]]=i;
  27. if(valid(k))
  28. if(k==t)//solutie
  29. {
  30. for(i=1;i<=n;i++)
  31. {
  32. for(j=1;j<=m;j++)
  33. fout<<a[i][j]<<' ';
  34. fout<<'\n';
  35. }
  36. exit(0);
  37. }
  38. else
  39. bkt(k+1);
  40. a[l[k]][c[k]]=0;
  41. }
  42. }
  43. int main()
  44. {
  45. for(i=1;i<=n;i++)
  46. for(j=1;j<=m;j++)
  47. {
  48. fin>>a[i][j];
  49. if(a[i][j]==0)
  50. {
  51. l[++t]=i;
  52. c[t]=j;
  53. }
  54. }
  55. bkt(1);
  56.  
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement