素数环(UVa 524)
来源:互联网 发布:宏观数据 编辑:程序博客网 时间:2024/05/01 05:52
题目:
A ring is composed of n (even number) circles as shown in diagram. Put natural numbers
Note: the number of first circle should always be 1.
Input
n (0 < n <= 16)
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.
You are to write a program that completes above process.
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
第一眼看到这题时,以为先把素数找出来,再将偶数插入到素数里,形成一个环,主要是这题是英语,所以看的不是很懂,最后发现书上也有这道题,才理解。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int is_prime(int x) { for(int i = 2; i*i <= x; i++) if(x % i == 0) return 0; return 1;}int n, A[50], isp[50], vis[50];void dfs(int cur) { if(cur == n && isp[A[0]+A[n-1]]) {//判断首位1与末尾的和是否为素数; for(int i = 0; i < n; i++) { if(i != 0) printf(" "); printf("%d", A[i]); } printf("\n"); } else for(int i = 2; i <= n; i++) if(!vis[i] && isp[i+A[cur-1]]) {//中间的素相加是否为素数; A[cur] = i; vis[i] = 1; dfs(cur+1); vis[i] = 0; }}int main() { int kase = 0; while(scanf("%d", &n) == 1 && n > 0) { if(kase > 0) printf("\n"); printf("Case %d:\n", ++kase); for(int i = 2; i <= n*2; i++) isp[i] = is_prime(i); memset(vis, 0, sizeof(vis)); A[0] = 1; dfs(1); } return 0;}
- uva 524(素数环)
- 素数环(UVa 524)
- uva 524(素数环)
- UVA 524 素数环
- UVa 524 素数环(DFS)
- UVA-524 素数环 回溯
- uva - 524 - Prime Ring Probl(素数环、回溯)
- 素数环(Prime Ring Problem,UVa 524)
- UVa 524 Prime Ring Problem(素数环)
- UVA 524 素数环(DFS枚举+剪枝)
- 例题7-4 素数环 UVa 524
- Uva 524 Prime Ring (素数环)
- uva 524回溯经典题素数环
- 素数环(Prime Ring Problem, Uva 524)
- UVA-524 Prime Ring Problem 素数环
- UVA-10200(素数)
- 例题7-4 素数环(Prime Ring Problem, UVa 524)
- UVA 524 素数环Prime Ring Problem (回溯法)
- GitHub 的简单使用
- HDOJ1597 find the nth digit(二分)
- 【HDOJ 2147】 kiki's game
- leetcode刷题。总结,记录,备忘162
- 煎饼侠
- 素数环(UVa 524)
- Java类加载器总结
- printf输出颜色
- HTTP405
- 求一个字符串中连续出现的次数最多的子串
- C#高级编程六十二天----LINQ标准的查询操作符
- TortoiseSVN搭建本地版本库及简单操作使用
- GLSL要点记录
- Hibernate 悲观锁与乐观锁