POJ 2676 Sudoku (DFS)
2015-10-30 14:22
281 查看
数独,开三个标记,直接暴力,400多mS还是可以接受的
#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<sstream> #include<queue> #include<cstdio> using namespace std; typedef long long LL; const int INF = 0x3f3f3f3f; const int M = 1010; int vish[15][15]; int visl[15][15]; int vis[15][15]; char s[15][15]; int mp[15][15]; int flag; int dfs(int x, int y, int sum) { if (flag) return 1; if (sum == 0) { for (int i = 0; i < 9; ++i) { for (int j = 0; j < 9; ++j) { cout << mp[i][j]; } puts(""); } flag = 1; return 1; } while (mp[x][y] != 0) { if (y == 8 && x == 8) break; if (y == 8) { x++; y = 0; } else y++; } for (int i = 1; i <= 9; ++i) { if (!vish[x][i] && !visl[y][i] && !vis[(y / 3) + (x / 3) * 3 + 1][i]) { vish[x][i] = 1; visl[y][i] = 1; vis[(y / 3) + (x / 3) * 3 + 1][i] = 1; mp[x][y] = i; sum--; dfs(x, y, sum); sum++; vish[x][i] = 0; visl[y][i] = 0; mp[x][y] = 0; vis[(y / 3) + (x / 3) * 3 + 1][i] = 0; } } return 0; } int main() { int t; scanf("%d", &t); while (t--) { memset(visl, 0, sizeof(visl)); memset(vish, 0, sizeof(vish)); memset(vis, 0, sizeof(vis)); for (int i = 0; i < 9; ++i) { for (int j = 0; j < 9; ++j) { cin >> s[i][j]; mp[i][j] = s[i][j] - '0'; } } int ans = 0; for (int i = 0; i < 9; ++i) { for (int j = 0; j < 9; ++j) { //cout << ( j/ 3) + (i / 3) * 3 +1<< " "; int tmp = mp[i][j]; if (tmp == 0) { ans++; continue; } vish[i][tmp] = 1; visl[j][tmp] = 1; vis[(j / 3) + (i / 3) * 3 + 1][tmp] = 1; } //puts(""); } //cout << ans << endl; flag = 0; dfs(0, 0, ans); } return 0; }
相关文章推荐
- cf(思维题)
- Java编程中外部类访问private成员方法
- 解决std::addressof找不到及eclipse lunna+cdt 8.6.0 支持 c++11的设置
- 百度地图手机端单触点单击和长按事件,解决部分手机(小米手机)地图单击事件失效,多触点、拖动依然触发长按的bug
- stereo delay plugin for ladspa
- solr实战问题集合
- mybatis3源码研究-构建SqlSessionFactory(二)
- Kotlin: Java 6 废土中的一线希望
- Dubbo zookeeper 初探
- 腻子脚本
- POJ 2723 HDU 1816 Get Luffy Out
- Kudu – 在快数据上的进行快分析的存储
- 2015-10-30-Android手机屏幕相关知识点
- 四种方案解决ScrollView嵌套ListView问题(转)
- Inner join,outer join,left join,right join的区别
- Netty4.x中文教程系列 ChannelHandler
- JavaScript中的定时器之Item23的合理使用
- 一个APP两个程序主入口,两个图标,互不干扰
- fastjson其他常用方法
- SQL之T-sql 语句操作数据库