求大佬指明错误

P1784 数独

```cpp #include<bits/stdc++.h> using namespace std; int sd[10][10]; bool fang[10][10],heng[10][10],shu[10][10]; void print() { for(int i=1;i<=9;i++) { for(int j=1;j<=9;j++) { cout<<sd[i][j]<<" "; } cout<<endl; } exit(0); } void dfs(int x,int y) { if(x==10&&y==1) print(); if(sd[x][y]==0) { int i; for(i=1;i<=9;i++) { if(heng[x][i]==0&&shu[y][i]==0&&fang[3*((x-1)/3)+((y-1)/3)+1][i]==0) { sd[x][y]=i; heng[x][i]=1; shu[y][i]=1; fang[3*((x-1)/3)+((y-1)/3)+1][i]=1; if(y==9) { dfs(x+1,1); sd[x][y]=0; heng[x][i]=0; shu[y][i]=0; fang[3*((x-1)/3)+((y-1)/3)+1][i]=0; } else { dfs(x,y+1); sd[x][y]=0; heng[x][i]=0; shu[y][i]=0; fang[3*((x-1)/3)+((y-1)/3)+1][i]=0; } } } } else { if(y==9) dfs(x+1,1); else dfs(x,y+1); } } int main() { for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) { cin>>sd[i][j]; int temp=sd[i][j]; heng[i][temp]=1; shu[j][temp]=1; if(i<=3) { if(j<=3) fang[1][temp]=1; if(j>=7) fang[3][temp]=1; if(j>=4&&j<=6) fang[2][temp]=1; } if(i>=7) { if(j<=3) fang[7][temp]=1; if(j>=7) fang[9][temp]=1; if(j>=4&&j<=6) fang[8][temp]=1; } if(i<=6&&i>=4) { if(j<=3) fang[4][temp]=1; if(j>=7) fang[6][temp]=1; if(j>=4&&j<=6) fang[5][temp]=1; } } dfs(1,1); } ```
by silverxz @ 2017-10-27 12:50:32


谢谢大佬,%%%
by partychicken @ 2017-10-27 12:50:55


|