[ACM] 1016 Prime Ring Problem (深度优先搜索)
来源:互联网 发布:网络博客套利方法 编辑:程序博客网 时间:2024/05/03 19:24
Prime Ring Problem
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.
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.
You are to write a program that completes above process.
Print a blank line after each case.
Sample Input
68
Sample Output
Case 1:1 4 3 2 5 61 6 5 2 3 4Case 2:1 2 3 8 5 6 7 41 2 5 8 3 4 7 61 4 7 6 5 8 3 21 6 7 4 3 8 5 2
Source
Asia 1996, Shanghai (Mainland China)
省赛的失利也不能阻挡我前进的脚步,经历过就是一件好事,正如老师所说的,结果谁也没法预测,但这个过程是实实在在的,自己可以在其中收获很多东西。人生中需要经历很多事情,有些事情,只有亲身经历过才会懂。
解题思路:
素数环要求任何相邻的两个数相加的和必须为素数。用DFs,从一年前期末考试两个多小时也没做出来这个题到现在的一次Ac,自己真的进步了。
代码:
#include <iostream>#include <algorithm>#include <string.h>#include <cmath>using namespace std;const int maxn=25;bool visit[maxn];int num[maxn];int n;bool prime(int n){ if(n==1) return false; if(n==2) return true; if(n%2==0) return false; for(int i=3;i<=(int)sqrt(n);i+=2) if(n%i==0) return false; return true;}void dfs(int step){ if(step>n&&prime(num[n]+num[1])) { for(int i=1;i<=n-1;i++) cout<<num[i]<<" "; cout<<num[n]<<endl; } for(int i=2;i<=n;i++) { num[step]=i; if(prime(num[step]+num[step-1])&&!visit[i])//继续向下搜索的条件 { visit[i]=1; dfs(step+1); visit[i]=0; } }}int main(){ int c=1; while(cin>>n) { cout<<"Case "<<c++<<":"<<endl; memset(visit,0,sizeof(visit)); num[1]=1; dfs(2); cout<<endl; } return 0;}
0 0
- [ACM] 1016 Prime Ring Problem (深度优先搜索)
- Prime Ring Problem(搜索 深度优先)
- HDU Prime Ring Problem(深度优先搜索)
- HDU 1016 Prime Ring Problem (DFS(深度优先搜索))
- HDU 1016 Prime Ring Problem(深度优先搜索)
- HDOJ 1016 Prime Ring Problem(DFS深度优先搜索)
- HDOJ Prime Ring Problem (深度优先搜索)
- HDU1016 Prime Ring Problem(深度优先搜索)
- Prime Ring Problem (素数环)深度优先搜索
- HDU--杭电--1016--Prime Ring Problem--深度优先搜索--此类中的水题
- 1016 Prime Ring Problem 搜索(深搜)
- ACM 搜索 hdu1016 Prime Ring Problem
- hdoj1016 Prime Ring Problem (深度搜索)
- [ACM] hdu 1016 Prime Ring Problem (DFS)
- ACM HDU 1016 Prime Ring Problem
- HDU ACM 1 1016 Prime Ring Problem
- 杭电1016Prime Ring Problem(搜索)
- 搜索专题(DFS)HDU 1016-Prime Ring Problem
- 缓存之memcached
- Memcache和Redis对比
- 解析JVM线程同步机制
- OCP 1Z0 051 17
- DP-记忆化dp--Bribe the Prisoners
- [ACM] 1016 Prime Ring Problem (深度优先搜索)
- getsockname和getpeername的用法及实例
- 学jsp之路
- 继承的时候,子类的拷贝构造函数和重载运算符的实现
- HTML代码
- 如何将查询到的数据显示在DataGridView中
- mysql用户管理
- MySQL安装教程
- ZOJ3669:Japanese Mahjong I