UEST OJ1222(DFS)
2015-10-27 00:49
495 查看
南阳CCPC的H题,意思是给你一个4*4的数独要你填写完整,其中每行没列和每个4快都只有数字1-4。
数据很小暴力搞搞。
数据很小暴力搞搞。
#include <bits/stdc++.h> using namespace std; #define maxn 11 char mp[maxn][maxn]; int cnt; struct node { int x, y; }p[22]; bool dfs (int pos) { if (pos > cnt) return 1; int x = p[pos].x, y = p[pos].y; bool vis[maxn]; memset (vis, 0, sizeof vis); for (int i = 0; i < 4; i++) { if (mp[x][i] != '*') vis[mp[x][i]-'0'] = 1; if (mp[i][y] != '*') vis[mp[i][y]-'0'] = 1; } if (mp[x^1][y^1] != '*') vis[mp[x^1][y^1]-'0'] = 1; for (int i = 1; i <= 4; i++) { if (!vis[i]) { mp[x][y] = i+'0'; if (dfs (pos+1)) return 1; } } mp[x][y] = '*'; return 0; } int main () { //freopen ("in", "r", stdin); ios::sync_with_stdio(0); int t, kase = 0; cin >> t; while (t--) { cnt = 0; for (int i = 0; i < 4; i++) { cin >> mp[i]; } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (mp[i][j] == '*') p[++cnt].x = i, p[cnt].y = j; } } dfs (1); cout << "Case #" << ++kase << ":" << endl; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { cout << mp[i][j]; } cout <<endl; } } return 0; }
相关文章推荐
- Codeforces Round #327 (Div. 2)A. Wizards' Duel
- UESTC OJ1221(DFS)
- 免费 UGUI 插件 Inventory Master 背包系统使用方法
- 编程技巧:使用整数同时进行多个true|false判断
- java-buildpack源码分析之Detect
- java-buildpack源码分析之Compile
- java-buildpack源码分析之Release
- UESTC OJ1220(最短路)
- requestLayout() 和 invalidate()的区别
- bzoj3538【Usaco2014 Open】Dueling GPS
- Opencv 鼠标事件GUI
- 黑马程序员——Java基础(十一)之GUI
- Lightoj 1100 - Again Array Queries (枚举剪枝)
- Java中String ,StringBuffer和StringBuilder的区别
- Qt基础——UI文件.h文件说明
- OC 非常用类 --- NSValue
- jd-gui--class文件的反编译工具
- UI作品制作
- HDU - 1711 Number Sequence(KMP)
- Web应用中request获取path,URI,URL