hihoCoder #1268 : 九宫 【DFS】
2016-03-12 19:00
387 查看
题目链接:hihoCoder #1268 : 九宫
怎么搞都能过
AC代码:
怎么搞都能过
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #define PI acos(-1.0) #define CLR(a, b) memset(a, (b), sizeof(a)) #define fi first #define se second using namespace std; typedef long long LL; typedef pair<int, int> pii; const int MAXN = 1e5+10; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; void getmax(int &a, int b) {a = max(a, b); } void getmin(int &a, int b) {a = min(a, b); } void add(LL &x, LL y) { x += y; x %= MOD; } int Map[3][3]; bool use[10]; bool judge() { int sum1, sum2; for(int i = 0; i <= 2; i++) { sum1 = Map[i][0] + Map[i][1] + Map[i][2]; sum2 = Map[0][i] + Map[1][i] + Map[2][i]; if(sum1 != 15 || sum2 != 15) return false; } sum1 = sum2 = 0; for(int i = 0; i <= 2; i++) sum1 += Map[i][i]; for(int i = 0; i <= 2; i++) sum2 += Map[i][2-i]; return sum1 == 15 && sum2 == 15; } void DFS(int row, int cul) { if(cul == 3) { DFS(row+1, 0); return ; } if(row == 3) { if(judge()) { for(int i = 0; i <= 2; i++) { for(int j = 0; j <= 2; j++) { if(j) cout << " "; cout << Map[i][j]; } cout << endl; } } return ; } for(int i = cul; i < 3; i++) { if(Map[row][i]) continue; for(int j = 1; j <= 9; j++) { if(use[j]) continue; use[j] = true; Map[row][i] = j; DFS(row, i+1); Map[row][i] = 0; use[j] = false; } } DFS(row+1, 0); } int main() { while(cin >> Map[0][0] >> Map[0][1] >> Map[0][2]) { for(int i = 1; i <= 2; i++) cin >> Map[i][0] >> Map[i][1] >> Map[i][2]; for(int i = 0; i <= 2; i++) { for(int j = 0; j <= 2; j++) { if(Map[i][j]) { Map[2-i][2-j] = 10 - Map[i][j]; } } } Map[1][1] = 5; int cnt = 0; cnt = (Map[0][0] > 0) + (Map[0][1] > 0) + (Map[0][2] > 0) + (Map[1][0] > 0); if(cnt >= 2) { CLR(use, false); for(int i = 0; i <= 2; i++) for(int j = 0; j <= 2; j++) use[Map[i][j]] = true; DFS(0, 0); } else { printf("Too Many\n"); } } return 0; }
相关文章推荐
- 第三周项目4:穷举法解决组合问题---换分币
- 工厂设计模式--确定对话框
- nodejs--Nodejs单元测试小结
- 学习进度表01
- myeclipse常用快捷键总结
- linux下安装mysql5.6
- hdoj 1896 Stones 【优先队列】
- 网络与安全方面的最佳开源软件
- hdoj 1716 排列2 【STL】
- java设计模式——结构型之组合模式
- MySQL集群
- 67.迷宫问题(广搜)
- javascript--给你的JS代码添加单元测试
- 小学四则运算题目自动生成
- 构建之法阅读笔记01
- 67.迷宫问题(广搜)
- 67.迷宫问题(广搜)
- linux centos 常用命令
- UIButton
- 单向链表