Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct pct
- {
- int xi,xj;
- }x[50];
- int a[10][10],nr=0;
- int verificare(int k,int i,int j)
- {
- for(int p=1;p<=9;p++)
- {
- if(a[i][p]==k)
- return 0;
- if(a[p][j]==k)
- return 0;
- }
- int n1,m1,n2,m2;
- if(i<=3)
- {
- n1=1;n2=3;
- }
- else
- {
- if(i<=6)
- {n1=4;n2=6;}
- else
- {n1=7;n2=9;}
- }
- if(j<=3)
- {m1=1;m2=3;}
- else
- {
- if(j<=6)
- {m1=4;m2=6;}
- else
- {m1=7;m2=9;}
- }
- for(int p=n1;p<=n2;p++)
- for(int q=m1;q<=m2;q++)
- if(a[p][q]==k)
- return 0;
- return 1;
- }
- void backtrk(int x,int y)
- {
- if(x<=9&&y<=9)
- {
- for(int i=1;i<=9;i++)
- {
- if(verificare(i,x,y)&&a[x][y]==0)
- {
- a[x][y]=i;
- }
- }
- backtrk(x,y+1);
- backtrk(x+1,y);
- backtrk(x+1,y+1);
- }
- }
- int main()
- {
- ifstream f("f.in");
- ofstream g("sudoku.out");
- for(int i=1;i<=9;i++)
- for(int j=1;j<=9;j++)
- f>>a[i][j];
- for(int i=1;i<=9;i++)
- for(int j=1;j<=9;j++)
- if(a[i][j]==0)
- {
- nr++;
- x[nr].xi=i;
- x[nr].xj=j;
- }
- backtrk(1,1);
- for(int i=1;i<=9;i++)
- {
- for(int j=1;j<=9;j++)
- g<<a[i][j]<<" ";
- g<<"\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement