HDU 5547 Sudoku(暴力)
来源:互联网 发布:linux怎么建立文件 编辑:程序博客网 时间:2024/06/05 10:31
思路:4X4的,直接爆搜就好了
#include <bits/stdc++.h>using namespace std;const int maxn = 5;char a[maxn][maxn];int rec[20][2], cnt;bool dfs(int th){//cout<<"th:"<<th<<endl;if(th>=cnt) return true;int x = rec[th][0], y=rec[th][1];int vis[5];memset(vis, 0, sizeof(vis));for(int i=1;i<=4;++i){if(a[x][i]!='*') vis[a[x][i]-'0']=1;if(a[i][y]!='*') vis[a[i][y]-'0']=1;}if(x<=2){if(y<=2) {for(int i=1;i<=2;++i) for(int j=1;j<=2;++j) if(a[i][j]!='*') vis[a[i][j]-'0']=1;}else {for(int i=1;i<=2;++i)for(int j=3;j<=4;++j) if(a[i][j]!='*') vis[a[i][j]-'0']=1;}}else {if(y<=2) {for(int i=3;i<=4;++i)for(int j=1;j<=2;++j) if(a[i][j]!='*') vis[a[i][j]-'0']=1;}else {for(int i=3;i<=4;++i)for(int j=3;j<=4;++j) if(a[i][j]!='*') vis[a[i][j]-'0']=1;}}for(int i=1;i<=4;++i){if(!vis[i]){a[rec[th][0]][rec[th][1]] = i+'0';if(dfs(th+1)) return true;a[rec[th][0]][rec[th][1]] = '*';}}return false;}int main(){int ca, tt=1;scanf("%d", &ca);while(ca--){for(int i=1;i<=4;++i) scanf("%s", a[i]+1);int x=1, y=1;cnt=0;for(int i=1;i<=4;++i)for(int j=1;j<=4;++j) if(a[i][j]=='*'){rec[cnt][0]=i, rec[cnt][1]=j; cnt++;}dfs(0);printf("Case #%d:\n", tt++);for(int i=1;i<=4;++i){for(int j=1;j<=4;++j) printf("%c", a[i][j]);puts("");}}return 0;}
0 0
- HDU 5547 Sudoku(暴力)
- hdu 5547 Sudoku dfs 暴力回溯 解题报告
- HDU 1426 Sudoku Killer ( 暴力dfs 输入输出格式坑)
- hdu 5547 Sudoku(dfs)
- hdu5547 Sudoku (暴力DFS)
- HDU 5547 Sudoku
- hdu 5547 Sudoku【dfs】
- hdu 5547 Sudoku
- hdu 5547 Sudoku
- ACdream 1195 Sudoku Checker (暴力)
- HDU1426 Sudoku Killer(DFS暴力)
- 【CCPC】hdu 5547Sudoku【dfs】
- CDOJ 1222 Sudoku【暴力】
- H - Sudoku (dfs暴力)
- HDU 5547 Sudoku(dfs+模拟+状态判断)
- HDU 5547 (DFS暴力)
- Sudoku HDU
- HDU 5745(暴力)
- robots.txt 简介
- muduo网络库学习笔记(0):面向对象编程风格和基于对象编程风格的比较
- 第十一章 消息队列管理
- IMX7的双核通信例子问题(rpmsg)
- HDU 1711 Number Sequence(kmp专题)
- HDU 5547 Sudoku(暴力)
- python 学习(五) While 循环语句
- Android Developer Document——APP开发深度好文
- 字符串加解密 算法
- hdu 5750——Dertouzos(简单)
- 理解矩阵乘法
- next_permutation函数
- 导航栏的相关设置
- solr在酒店列表查询中的使用