HDU 1016(搜索题,DFS)
2010-07-30 08:13
405 查看
Prime Ring Problem
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5720 Accepted Submission(s): 2553
Problem Description
A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime.
Note: the number of first circle should always be 1.
Input
n (0 < n < 20).
Output
The output format is shown as sample below. Each row represents a series of circle numbers in the ring beginning from 1 clockwisely and anticlockwisely. The order of numbers must satisfy the above requirements. Print solutions in lexicographical order.
You are to write a program that completes above process.
Print a blank line after each case.
Sample Input
6 8
Sample Output
Case 1: 1 4 3 2 5 6 1 6 5 2 3 4 Case 2: 1 2 3 8 5 6 7 4 1 2 5 8 3 4 7 6 1 4 7 6 5 8 3 2 1 6 7 4 3 8 5 2此题纠结了我一个晚上。。。太悲剧了~ 一道简单的DFS题而已!#include <iostream> #include <math.h> using namespace std; #define N 20 int map ,mark ; int res ,p ; int n,ct; bool is_prime(int u) { if(u==0 || u==1) return false; if(u==2) return true; if(u%2==0) return false; for(int i=3;i<=sqrt((double)u);i+=2) if(u%i==0) return false; return true; } void init() { int i,j; for(i=1;i<N;i++) { for(j=i+1;j<N;j++) { if(is_prime(i+j)) map[i][j]=map[j][i]=1; } } } void output(int t)//输出例程 { int k=0; while(t)//通过对路径的分析获得结果 { res[k++]=t; t=p[t]; } for(int j=n-1;j>=0;j--)//输出出来 { if(j!=n-1) putchar(' '); printf("%d",res[j]); } putchar('/n'); } void DFS(int x,int count) { mark[x]=1; if(count==n && map[x][1]==1) { output(x); } for (int i=1;i<=n;i++) { if(map[x][i]==1 && mark[i]==0) { p[i]=x; DFS(i,count+1); mark[i]=0; } } } int main() { init(); while (scanf("%d",&n)!=EOF) { ct++; printf("Case %d:/n",ct); DFS(1,1); printf("/n"); } return 0; }
相关文章推荐
- HDU 1016 搜索问题 dfs
- HDU 1016 Prime Ring Problem DFS + 记忆化搜索
- HDU 1016 Prime Ring Problem(搜索入门题 DFS,多种方式)
- 搜索专题(DFS)HDU 1016-Prime Ring Problem
- hdu 1016 Prime Ring Problem(dfs)
- HDU 1016 Prime Ring Problem (DFS)
- hdu 1016 Prime Ring Problem 搜索
- HDU--1078 -- FatMouse and Cheese [记忆搜索] [DFS]
- hdu 1016 Prime Ring Problem(DFS)
- hdu1016--dfs
- hdu 1016 (dfs)
- hdu 1016(dfs基础)
- hdu 4771 Stealing Harry Potter's Precious (2013亚洲区杭州现场赛)(搜索 bfs + dfs) 带权值的路径
- hdu 1016 Prime Ring Problem【DFS】
- 深度搜索DFS hdu-1312
- [HDU-1016] 无优化DFS
- HDU 1016 Prime Ring Problem (DFS)
- hdu 1241 简单 搜索DFS (深搜)
- HDU 1016 Prime Ring Problem 素数环 搜索
- hdu 1016(一道经典的dfs)