| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
正搜516MS,反搜0MS刚开始被吓着了,没想到一次就AC了 #include<stdio.h> #include<string.h> int flag,s=0,t[10][10],fx[10][10],fy[10][10],fs[10][10],f[10][10]; void dfs(int n) {int i,j; if(n==-1) {flag=1; for(i=1;i<=9;i++) for(j=1;j<=9;j++) {printf("%d",t[i][j]); if(j==9) puts(""); } return; } if(flag) return; int x=n/9+1,y=n%9+1; if(f[x][y]) dfs(n-1); else {for(i=1;i<=9;i++) { if(!fx[x][i]&&!fy[y][i]&&!fs[(x-1)/3*3+(y-1)/3][i]) {t[x][y]=i; fx[x][i]=2; fy[y][i]=2; fs[(x-1)/3*3+(y-1)/3][i]=2; dfs(n-1); if(flag) return; t[x][y]=0; fx[x][i]=0; fy[y][i]=0; fs[(x-1)/3*3+(y-1)/3][i]=0; } } } } int main() {int i,j,c; scanf("%d",&c); while(c--) {char s[10]; memset(fx,0,sizeof(fx)); memset(fy,0,sizeof(fy)); memset(fs,0,sizeof(fs)); memset(f,0,sizeof(f)); flag=0; for(i=1;i<=9;i++) {scanf("%s",s); for(j=1;j<=9;j++) {t[i][j]=s[j-1]-'0'; if(t[i][j]) f[i][j]=1; if(t[i][j]) {fx[i][t[i][j]]=1; fy[j][t[i][j]]=1; fs[(i-1)/3*3+(j-1)/3][t[i][j]]=1; f[i][j]=1; } } } dfs(80); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator