SDAU 搜索专题 23 Another Eight Puzzle
2016-04-10 16:44
176 查看
1:问题描述
Problem Description
Fill the following 8 circles with digits 1~8,with each number exactly once . Conntcted circles cannot be filled with two consecutive numbers.
There are 17 pairs of connected cicles:
A-B , A-C, A-D
B-C, B-E, B-F
C-D, C-E, C-F, C-G
D-F, D-G
E-F, E-H
F-G, F-H
G-H
Filling G with 1 and D with 2 (or G with 2 and D with 1) is illegal since G and D are connected and 1 and 2 are consecutive .However ,filling A with 8 and B with 1 is legal since 8 and 1 are not consecutive .
In this problems,some circles are already filled,your tast is to fill the remaining circles to obtain a solution (if possivle).
Input
The first line contains a single integer T(1≤T≤10),the number of test cases. Each test case is a single line containing 8 integers 0~8,the numbers in circle A~H.0 indicates an empty circle.
Output
For each test case ,print the case number and the solution in the same format as the input . if there is no solution ,print “No answer”.If there more than one solution,print “Not unique”.
Sample Input
3
7 3 1 4 5 8 0 0
7 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
Sample Output
Case 1: 7 3 1 4 5 8 6 2
Case 2: Not unique
Case 3: No answer
2:大致思路
将数字填到表中要使有连线的位置,不能相邻。
3:思路
枚举就好啦。先将表填满,再检索是否满足题意。
4:感想
心好累。〒_〒
5:ac代码
Problem Description
Fill the following 8 circles with digits 1~8,with each number exactly once . Conntcted circles cannot be filled with two consecutive numbers.
There are 17 pairs of connected cicles:
A-B , A-C, A-D
B-C, B-E, B-F
C-D, C-E, C-F, C-G
D-F, D-G
E-F, E-H
F-G, F-H
G-H
Filling G with 1 and D with 2 (or G with 2 and D with 1) is illegal since G and D are connected and 1 and 2 are consecutive .However ,filling A with 8 and B with 1 is legal since 8 and 1 are not consecutive .
In this problems,some circles are already filled,your tast is to fill the remaining circles to obtain a solution (if possivle).
Input
The first line contains a single integer T(1≤T≤10),the number of test cases. Each test case is a single line containing 8 integers 0~8,the numbers in circle A~H.0 indicates an empty circle.
Output
For each test case ,print the case number and the solution in the same format as the input . if there is no solution ,print “No answer”.If there more than one solution,print “Not unique”.
Sample Input
3
7 3 1 4 5 8 0 0
7 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
Sample Output
Case 1: 7 3 1 4 5 8 6 2
Case 2: Not unique
Case 3: No answer
2:大致思路
将数字填到表中要使有连线的位置,不能相邻。
3:思路
枚举就好啦。先将表填满,再检索是否满足题意。
4:感想
心好累。〒_〒
5:ac代码
#include<stdio.h> #include<math.h> #include<string.h> #include<iostream> #include<cstdio> using namespace std; int a[10],vis[10],temp[10],cou; int isok() { if(fabs(a[2]-a[1])!=1&& fabs(a[3]-a[1])!=1&& fabs(a[4]-a[1])!=1&& fabs(a[2]-a[3])!=1&& fabs(a[2]-a[5])!=1&& fabs(a[2]-a[6])!=1&& fabs(a[3]-a[4])!=1&& fabs(a[3]-a[5])!=1&& fabs(a[3]-a[6])!=1&& fabs(a[3]-a[7])!=1&& fabs(a[4]-a[6])!=1&& fabs(a[4]-a[7])!=1&& fabs(a[5]-a[6])!=1&& fabs(a[5]-a[8])!=1&& fabs(a[6]-a[7])!=1&& fabs(a[6]-a[8])!=1&& fabs(a[7]-a[8])!=1 ) return 1; else return 0; } void dfs(int num) { int i; if(num==9) { if(isok()) { cou++; if(cou==1) { for(i=1;i<=8;i++) temp[i]=a[i]; } } return; } if(cou>=2) return; if(a[num]==0) for(i=1;i<=8;i++) { if(!vis[i]) { a[num]=i; vis[i]=1; dfs(num+1); a[num]=0; vis[i]=0; } } else dfs(num+1); } int main() { //freopen("r.txt","r",stdin); int t,casee=0; scanf("%d",&t); while(t--) { casee++; cou=0; int i; memset(vis,0,sizeof(vis)); memset(temp,0,sizeof(temp)); for(i=1;i<=8;i++) { scanf("%d",&a[i]);//注意这里有个空格哦! vis[a[i]]=1; } for(i=1;i<=8;i++) if(a[i]==0) break; dfs(i); cout<<"Case "<<casee<<": "; if(cou==1) { cout<<temp[1]; for(i=2;i<=8;i++) cout<<" "<<temp[i]; cout<<endl; } else if(cou==2) cout<<"Not unique"<<endl; else cout<<"No answer"<<endl; } return 0; }
相关文章推荐
- 简单的四则运算
- 数的奇偶性
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- 矩阵的乘法操作
- 蚂蚁爬行问题
- 蚂蚁爬行问题
- 求两个数的最大公约数【ACM基础题】
- 打印出二进制中所有1的位置
- 杭电题目---一只小蜜蜂
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- 初学ACM - 半数集(Half Set)问题 NOJ 1010 / FOJ 1207
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1002
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points