例题7-4 素数环 UVa 524
2015-08-23 15:57
411 查看
题目:点击打开链接
题意:输入正整数n,把整数1,2,3......n组成一个环,使得相邻两个整数之和为素数,输出时从整数1开始逆时针排列。同意换恰好输出一次。n<=16
dfs递归枚举判断,在判断素数的时候,初始化一个素数表就好了,比较节省时间
题意:输入正整数n,把整数1,2,3......n组成一个环,使得相邻两个整数之和为素数,输出时从整数1开始逆时针排列。同意换恰好输出一次。n<=16
dfs递归枚举判断,在判断素数的时候,初始化一个素数表就好了,比较节省时间
#include<iostream> #include<cstdio> #include<string> #include<algorithm> #define MAXN 50 using namespace std; int n, A[MAXN] = {1}, ispe[MAXN], vis[MAXN]; void dfs(int cur) { if(cur == n&& ispe[A[0] + A[n - 1]]) { for(int i = 0; i < n; i++) { i ? printf(" %d", A[i]) : printf("%d", A[i]); } printf("\n"); } else for(int i = 2; i <= n; i++) { if(!vis[i]&& ispe[i + A[cur - 1]]) { A[cur] = i; vis[i] = 1; dfs(cur + 1); vis[i] = 0; } } } int main() { for(int i = 2; i <= 50; i++) ispe[i] = 1; for(int i = 2; i <= 50; i++) for(int j = i + i; j + i <= 50; j += i) ispe[j] = 0; int kase = 0; while(cin >> n) { if(kase++) printf("\n"); printf("Case %d:\n", kase); dfs(1); } return 0; }时间126ms,这是我目前知道最快的判断素数的方法了,有更快地请告诉我,thx。。
#include<iostream> #include<cstdio> #include<string.h> #include<cmath> #include<algorithm> #define MAXN 50 using namespace std; int n, A[MAXN] = {1}, ispe[MAXN], vis[MAXN]; bool isPrimeNum(int num) { if (num <= 2) { return num == 2; } if (num % 2 == 0) { return false; } int iSqrt = sqrt(num); for (int i = 3; i <= iSqrt; i+=2) { if (num % i == 0) { return false; } } return true; } void dfs(int cur) { if(cur == n&& ispe[A[0] + A[n - 1]]) { for(int i = 0; i < n; i++) { i ? printf(" %d", A[i]) : printf("%d", A[i]); } printf("\n"); } else for(int i = 2; i <= n; i++) { if(!vis[i]&& ispe[i + A[cur - 1]]) { A[cur] = i; vis[i] = 1; dfs(cur + 1); vis[i] = 0; } } } int main() { memset(ispe,0,sizeof(ispe)); for(int i = 2; i <= 50; i++) { if(isPrimeNum(i))ispe[i]=1; } int kase = 0; while(cin >> n) { if(kase++) printf("\n"); printf("Case %d:\n", kase); dfs(1); } return 0; }
相关文章推荐
- HDU 5200 Trees(线段树 离线应用)经典
- WinCE学习相关知识
- blog集合
- mfc 2048
- JavaScript高级
- 1、hadoop配置伪分布式
- mongoDB与sql语句对照表
- Java之旅hibernate(5)——hibernate的三种状态
- 读写锁优先级 写饥饿
- php大力力 [007节]php静态表量
- hibernate Criteria Query
- android权限大全
- Pascal数组递推
- 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)
- hdu1527 威佐夫博奕
- iOS 自定义动画 push/pop动画
- JQuery第四天总结
- HDOJ 5419 Victor and Toys 树状数组
- oracle 查看用户所在的表空间
- Objective-C 【多态】