poj1016 Prime Ring Problem---dfs
2014-02-20 15:56
239 查看
Prime Ring Problem
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22718 Accepted Submission(s): 10116
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
n (0 < n < 20).
[align=left]Output[/align]
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.
[align=left]Sample Input[/align]
6 8
[align=left]Sample Output[/align]
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
[align=left]Source[/align]
Asia 1996, Shanghai (Mainland China)
题目大意:给你一个n,输出用1~n的数组成一个环,相邻两数之间的和为素数。
代码:
#include <iostream> #include <cstring> using namespace std; int hash[30]; int arr[100]; int n; int check(int x) { for(int i=2;i<x;i++) { if(x%i==0) return 0; } return 1; } void dfs(int order,int index) { int i; arr[order]=index; hash[index]=1; if(order==n) { if(check(arr[order]+arr[1])) { cout<<"1"; for(i=2;i<=n;i++) cout<<" "<<arr[i]; cout<<endl; } return; } for(i=1;i<=n;i++) { if(!hash[i]&&check(arr[order]+i)) { dfs(order+1,i); hash[i]=0; } } return; } int main() { int flag=1; while(cin>>n) { cout<<"Case "<<flag++<<":"<<endl; memset(hash,0,sizeof(hash)); dfs(1,1); cout<<endl; } return 0; }
相关文章推荐
- POJ - 1016 - Prime Ring Problem(dfs)
- 【HDU 1016】Prime Ring Problem(DFS)
- HDU - 1016 Prime Ring Problem(dfs,素数环)
- HDU - 1016 Prime Ring Problem ——DFS
- HDOJ 1016 Prime Ring Problem DFS
- HDU 1016 Prime Ring Problem (DFS回溯)
- Hdu 1016 Prime Ring Problem (素数环经典dfs)
- hdu 1016 Prime Ring Problem (DFS)
- hdu 1016 Prime Ring Problem (dfs)
- HDU 1016 Prime Ring Problem(DFS)
- HDU 1016 Prime Ring Problem(经典DFS+回溯)
- hdu 1016 Prime Ring Problem(DFS)
- hdu 1016 Prime Ring Problem(dfs)
- HDOJ 1016 Prime Ring Problem(dfs+回溯)
- HDU 1016 Prime Ring Problem(DFS)
- hdoj 1016 Prime Ring Problem【DFS】
- #HDU 1016 Prime Ring Problem 【DFS+溯回求组数】
- 【HDU 1016】Prime Ring Problem —— DFS
- HDOJ1016 Prime Ring Problem (DFS,回溯)
- HDU 1016 Prime Ring Problem 【DFS】