HDU 2514 Another Eight Puzzle
2014-02-18 16:37
344 查看
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2514
题意:每两个相连的点差要大于1。
思路:之前用我是一个点一个点的判断,但是老是错了,最后想了想还是要八个点一起判断。
代码:
题意:每两个相连的点差要大于1。
思路:之前用我是一个点一个点的判断,但是老是错了,最后想了想还是要八个点一起判断。
代码:
#include <stdio.h> #include <string.h> #include <math.h> int Map[8][8] = { { 0, 1, 1, 1, 0, 0, 0, 0 }, { 1, 0, 1, 0, 1, 1, 0, 0 }, { 1, 1, 0, 1, 1, 1, 1, 0 }, { 1, 0, 1, 0, 0, 1, 1, 0 }, { 0, 1, 1, 0, 0, 1, 0, 1 }, { 0, 1, 1, 1, 1, 0, 1, 1 }, { 0, 0, 1, 1, 0, 1, 0, 1 }, { 0, 0, 0, 0, 1, 1, 1, 0 } }; int visit[10], in[10], ans[10]; // 搜索标记、输入、答案 int sign; // sign==1时的输入数组直接用in[] int ABS(int x){ if (x >= 0) return x; return -x; } int ok() // 判断当前搜索的一组是否符合 { for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) if (Map[i][j] && ABS(in[i] - in[j]) == 1) return 0; return 1; } void dfs(int a) { if (a == 8 && ok()){ sign++; for (int i = 0; i<8; i++){ ans[i] = in[i]; } } if (sign > 1) return; if (in[a] != 0) dfs(a + 1); for (int i = 1; i <= 8; i++) { if (!visit[i]){ visit[i] = 1; in[a] = i; dfs(a + 1); in[a] = 0; visit[i] = 0; } } } int main() { int t, Case = 0; scanf("%d", &t); while (t--) { memset(visit, 0, sizeof(visit)); for (int i = 0; i < 8; i++){ scanf("%d", &in[i]); visit[in[i]] = 1; } sign = 0; dfs(0); printf("Case %d: ", ++Case); if (sign == 0) puts("No answer"); else if (sign == 1){ for (int i = 0; i < 7; i++) printf("%d ", ans[i]); printf("%d\n", ans[7]); } else puts("Not unique"); } return 0; }
相关文章推荐
- HDU 2514 Another Eight Puzzle
- hdu 2514 Another Eight Puzzle(DFS+回溯)
- hdu 2514 Another Eight Puzzle 枚举
- hdu 2514 Another Eight Puzzle
- hdu 2514 Another Eight Puzzle(DFS暴搜)
- hdu 2514 Another Eight Puzzle 图填数字 next_permutation+暴力
- HDU 2514 Another Eight Puzzle
- HDU 2514--Another Eight Puzzle【DFS】
- HDU 2514 Another Eight Puzzle(DFS)
- HDU 2514 Another Eight Puzzle
- HDU 2514 Another Eight Puzzle
- hdu 2514 Another Eight Puzzle
- hdu 2514 Another Eight Puzzle
- hdu 2514—— Another Eight Puzzle
- Problem V:Another Eight Puzzle(HDU 2514)
- hdu 2518(dfs)Another Eight Puzzle
- HDU [ Another Eight Puzzle ]——dfs全排列变式
- hdu 2541 Another Eight Puzzle(dfs)
- hdoj 2514 Another Eight Puzzle(DFS)
- Another Eight Puzzle