POJ 2034 Anti-prime Sequences (筛素数+DFS)
2013-01-10 12:44
302 查看
题目链接:http://poj.org/problem?id=2034
题目大意:输入m, n, d,求出m,m+1,m+2,````m+n的一个排列。使得任意的连续k个数之和都为合数,2<=k<=d。
思路:暴力DFS,依次枚举第一个数,第二个数····,第n-m+1个数即可.但是本人并不是很清楚为什么DFS不会超时……粗略看了一下觉得可能是当m-n远大于d时一定有解,所以不会出现无解遍历完的情况……
题目大意:输入m, n, d,求出m,m+1,m+2,````m+n的一个排列。使得任意的连续k个数之和都为合数,2<=k<=d。
思路:暴力DFS,依次枚举第一个数,第二个数····,第n-m+1个数即可.但是本人并不是很清楚为什么DFS不会超时……粗略看了一下觉得可能是当m-n远大于d时一定有解,所以不会出现无解遍历完的情况……
#include #include #include using namespace std; int n, m, d; int a[1100]; int sum[11]; int noprime[11100]; int vis[1110]; bool okflag; void Prime(int n){ for (int i = 2; i * i <= n; i ++){ if (!noprime[i]){ int p = i + i; while(p <= n){ noprime[p] = 1; p += i; } } } } void dfs(int p){ if (okflag == 1) return ; if (p > m - n + 1){ for (int i = 1; i < p - 1; i ++){ cout << a[i] << ","; } cout << a[p-1] <> n >> m >> d){ if (n + m + d == 0){ return 0; } memset(vis, 0, sizeof(vis)); okflag = 0; dfs(1); if (okflag == 0){ cout << "No anti-prime sequence exists." << endl; } } return 0; }
相关文章推荐
- POJ 2034 Anti-prime Sequences (筛素数+DFS)
- POJ 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences(dfs)
- poj 2034 Anti-prime Sequences(dfs)
- POJ-2034-Anti-prime Sequences
- poj 2034 Anti-prime Sequences(dfs)
- [水+dfs] poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences(dfs)
- POJ 2034 Anti-prime Sequences(数论+dfs)
- poj 2034 Anti-prime Sequences(dfs)
- POJ - 2034 Anti-prime Sequences(素数判断+搜索)
- poj 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences(素数预处理+DFS回溯)
- [暑假集训--数论]poj2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- 递归和回溯 POJ 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences