HDU 1426 Sudoku Killer
来源:互联网 发布:linux cp 排除文件夹 编辑:程序博客网 时间:2024/04/30 14:53
dfs搜索的题目,还是不太会写啊!参考了别人的代码写的。
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int map[9][9];int flag;bool seach(int a,int b,int k){ int i,j; for(i=0;i<9;i++) //判断每列是否已经出现k { if(map[i][b]==k) return true; } for(i=0;i<9;i++) //判断每行是否已经出现k { if(map[a][i]==k) return true; } for(i=a/3*3;i<a/3*3+3;i++) //判断每个宫格是否已经出现k { for(j=b/3*3;j<b/3*3+3;j++) { if(map[i][j]==k) return true; } } return false;}void dfs(int a,int b){ int k; if(a==9) { flag=1; return ; } if(!map[a][b]) { for(k=1;k<=9;k++) { if(!seach(a,b,k)) { map[a][b]=k; // cout<<k<<endl; if(b==8) dfs(a+1,0); else dfs(a,b+1); if(flag) return ; map[a][b]=0; } } } else { if(b==8) dfs(a+1,0); else dfs(a,b+1); }}int main(){// freopen("in.txt","r",stdin); int i,j; char c; int cnt=0; while(cin>>c) { memset(map,0,sizeof(map)); for(i=0;i<9;i++) { for(j=0;j<9;j++) { if(i!=0||j!=0) //开始的时候将|| 写成&&,改了很久才看出,惭愧啊! cin>>c; if(c>'0'&&c<='9') map[i][j]=c-'0'; } } if(cnt) cout<<endl; cnt++; flag=0; dfs(0,0); for(i=0;i<9;i++) { for(j=0;j<8;j++) { cout<<map[i][j]<<' '; } cout<<map[i][j]<<endl; } } return 0;}
- HDU 1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- hdu 1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- HDU-1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- HDU - 1426 Sudoku Killer
- hdu 1426 Sudoku Killer
- hdu 1426 Sudoku Killer
- Sudoku Killer HDU-1426
- HDU 1426 Sudoku Killer
- hdu 1426 Sudoku Killer
- hdu 1426 Sudoku Killer
- HDU 1426 Sudoku Killer
- org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unn
- DDX_TEXT()
- Python下的机器学习工具scikit-learn(学习笔记2--官方实例程序)
- ARM中断分发
- <context-param>与<init-param>的区别与作用
- HDU 1426 Sudoku Killer
- WinCE多线程并发 同步安全不容忽视
- CentOS安装thrift
- 在Eclipse中配置tomcat
- hadoop全套免费视频
- arm架构mmu
- 如何向App Store提交应用
- Android RecoverSystem 类
- linux gdb 调试多线程 多进程 显示宏