dfs hdu 1426 soduku killer
来源:互联网 发布:ios 模仿淘宝商品详情 编辑:程序博客网 时间:2024/04/29 04:07
只想说:the devil is in the details.
http://acm.hdu.edu.cn/showproblem.php?pid=1426
#include<stdio.h>struct node{ int x,y;}p,space[82];int sodu[9][9],cnt;/*数据比较弱,不管怎么dfs都能过此dfs的耗时是下面的1/3*/bool dfs(int t){ int i,j,k; if(t==cnt) { for(i=0;i<9;++i) { for(j=0;j<8;++j) printf("%d ",sodu[i][j]); printf("%d\n",sodu[i][j]); } return 1; } int vis[10]={0}; i=space[t].x; j=space[t].y; for(k=0;k<9;++k) vis[sodu[i][k]]=vis[sodu[k][j]]=1; i=space[t].x/3*3; j=space[t].y/3*3; /* 之前错误写法,丫的j的循环显然错了,竟然给我报TLE而不是WA,纠结啊 int ii=i+3, jj=j+3; for(;i<ii;++i) for(;j<jj;++j) vis[sodu[i][j]]=1; */ int ii=i+3, jj=j; for(;i<ii;++i) for(j=jj;j<jj+3;++j) vis[sodu[i][j]]=1; for(i=1;i<10;++i) if(!vis[i]) { sodu[space[t].x][space[t].y]=i; if(dfs(t+1)) return 1; sodu[space[t].x][space[t].y]=0; } return 0;}int main(){ int i,j,ca=0; char s[2]; while(scanf("%s",s)==1) { cnt=1; if(s[0]=='?') { space[cnt].x=0; space[cnt++].y=0; sodu[0][0]=0; } else sodu[0][0]=s[0]-'0'; for(j=1;j<9;++j) { scanf("%s",s); if(s[0]=='?') { space[cnt].x=0; space[cnt++].y=j; sodu[0][j]=0; } else sodu[0][j]=s[0]-'0'; } for(i=1;i<9;++i) for(j=0;j<9;++j) { scanf("%s",s); if(s[0]=='?') { sodu[i][j]=0; space[cnt].x=i; space[cnt++].y=j; } else sodu[i][j]=s[0]-'0'; } if(ca) printf("\n"); ca++; dfs(1); } return 0;}/*#include<stdio.h>struct node{ int x,y;}sp[82];int sodu[9][9],cnt,flag;bool ok(int k,int t){ int i,j,c; for(c=0;c<9;++c) if((sodu[sp[t].x][c]==k)||(sodu[c][sp[t].y]==k)) return 0; i=sp[t].x/3*3; j=sp[t].y/3*3; int ii=i+3,jj=j; for(;i<ii;++i) for(j=jj;j<jj+3;++j) if(sodu[i][j]==k) return 0; return 1;}int dfs(int t){ int i,j; if(t==cnt) { for(i=0;i<9;++i) { for(j=0;j<8;++j) printf("%d ",sodu[i][j]); printf("%d\n",sodu[i][j]); } //printf("\n"); flag=1; return 1; } for(i=1;i<10;++i) { j=sodu[sp[t].x][sp[t].y]; if(ok(i,t)) { sodu[sp[t].x][sp[t].y]=i; if(dfs(t+1)) return 1; sodu[sp[t].x][sp[t].y]=j; } } return 0;}int main(){ int i,j,ca=0; char s[2]; while(scanf("%s",s)!=EOF) { cnt=0; if(s[0]=='?') { sp[cnt].x=0; sp[cnt++].y=0; sodu[0][0]=0; } else sodu[0][0]=s[0]-'0'; for(j=1;j<9;++j) { scanf("%s",s); if(s[0]=='?') { sp[cnt].x=0; sp[cnt++].y=j; sodu[0][j]=0; } else sodu[0][j]=s[0]-'0'; } for(i=1;i<9;++i) for(j=0;j<9;++j) { scanf("%s",s); if(s[0]=='?') { sodu[i][j]=0; sp[cnt].x=i; sp[cnt++].y=j; } else sodu[i][j]=s[0]-'0'; } flag=0; if(ca) printf("\n"); ca++; dfs(0); } return 0;}*/
- dfs hdu 1426 soduku killer
- HDU 3111 Soduku [DFS]
- hdu 1426 Sudoku Killer dfs
- 【DFS】hdu 1426 Sudoku Killer
- HDU 1426--Sudoku Killer【DFS】
- HDU-1426-Sudoku Killer【DFS】
- 【HDU 1426 Sudoku Killer】+ DFS
- HDU 1426 Sudoku Killer DFS
- HDU 1426 Sudoku Killer (DFS)
- hdu 1426 Sudoku Killer(DFS)
- HDU 1426 Sudoku Killer DFS数独
- hdu 1426 Sudoku Killer(DFS暴搜)
- hdu-1426-Sudoku Killer(dfs)
- HDU-1426(Sudoku Killer)(dfs+巧妙思维)
- HDU 1426 Sudoku Killer (DFS 数独)
- hdu 1426 Sudoku Killer(DFS)
- HDU 1426 Sudoku Killer(dfs)
- poj 2676 Soduku dfs
- 简单的程序,神奇的进制
- fedora 16 gnome更换主题
- BST-二叉查找树算导学习
- postfix 日常维护队列管理[邮件服务器维护]
- 解决Windows 7报错问题
- dfs hdu 1426 soduku killer
- 【DP】-Codeforces Round #110 (Div. 1)-C. Cipher
- 系统登录后网页提示‘本网页既包含安全内容又包含不安全内容’的解决方式
- asp.net 文件下载,同样适用于mvc
- 用用程序挂起、复原与终止—IOS开发
- 想建个网站,寻3-5个同道。
- 几款国外主流虚拟主机控制面板介绍
- TAB换
- 很好的PS2键盘接受程序,相应快而准 //测试开发板 spartan-3e