zoj 1457 Prime Ring Problem
2011-02-23 12:24
351 查看
好早以前见过,恩,没做。。
今天见了,就做试试。
很早以前在CSDN的学生大本营见过有人提出这种问题,就是将20个数绕成环,相邻两个数的和是素数。当时有人提出思路就是,相邻两个数肯定是一奇一偶,然后神马的记不起来了。
按照这个思路,DFS,第几个位置搜索和它奇偶性相同的数并且判断它和前一个数是否加和是素数即可,这个判断可以筛个素数表。。。如果n为奇数肯定是不满足的。
提交就PE了,还挺嗨皮,木有WA or TLE。。。改了几次还是PE = =。。。
注意,输出不要有多余空格,如果n为奇数,输出一个空行就行了 = =。。。
今天见了,就做试试。
很早以前在CSDN的学生大本营见过有人提出这种问题,就是将20个数绕成环,相邻两个数的和是素数。当时有人提出思路就是,相邻两个数肯定是一奇一偶,然后神马的记不起来了。
按照这个思路,DFS,第几个位置搜索和它奇偶性相同的数并且判断它和前一个数是否加和是素数即可,这个判断可以筛个素数表。。。如果n为奇数肯定是不满足的。
提交就PE了,还挺嗨皮,木有WA or TLE。。。改了几次还是PE = =。。。
注意,输出不要有多余空格,如果n为奇数,输出一个空行就行了 = =。。。
#include <queue> #include <stack> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <limits.h> #include <string.h> #include <algorithm> #define MAX 25 using namespace std; int n; int vis[MAX]; int pr[100]; int out[MAX]; int cou; void init() { int i,k; for(i=0; i<100; i++) pr[i] = 1; pr[0] = pr[1] = 0; for(i=2; i<100; i++) for(k=2; k*i<100; k++) if( pr[i] == 1 ) pr[k*i] = 0; } void DFS() { int i; if( cou-1 == n && pr[out[cou-1]+out[1]] == 1 ) { printf("%d",out[1]); for(i=2; i<=n; i++) printf(" %d",out[i]); printf("/n"); return ; } for(i=1; i<=n; i++) if( cou % 2 == i % 2 && !vis[i] && pr[out[cou-1]+i] == 1 ) { vis[i] = 1; out[cou] = i; cou++; DFS(); vis[i] = 0; cou--; } } int main() { int ind = 1,i; init(); while( ~scanf("%d",&n) ) { printf("Case %d:/n",ind++); if( n % 2 == 1 ) { printf("/n"); continue; } memset(vis,0,sizeof(vis)); vis[1] = 1; cou = 1; out[cou] = 1; cou++; DFS(); printf("/n"); } return 0; }
相关文章推荐
- ZOJ 1457 Prime Ring Problem(dfs+剪枝)
- ZOJ 1457 Prime Ring Problem @Z
- ZOJ 1457 Prime Ring Problem(DFS)
- zoj1457_Prime Ring Problem
- zoj 1457 Prime Ring Problem
- zoj1457 Prime Ring Problem DFS
- zoj1457-Prime Ring Problem
- ZOJ-1457 prime ring problem 素数环 题解
- ZOJ 1457 Prime Ring Problem(dfs+剪枝)
- HDU 1016 Prime Ring Problem【第一次DFS的邂逅】
- HDU 1016 Prime Ring Problem(DFS)
- HDUOJ-1016 Prime Ring Problem(深搜)
- 杭电1016Prime Ring Problem
- B - Prime Ring Problem
- HDU1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem
- hdoj 1016 Prime Ring Problem 【DFS】
- HDOJ P1016 Prime Ring Problem
- HDU - 1016 Prime Ring Problem
- HDOJ_Prime Ring Problem