素数环问题---深度搜索遍历
生活随笔
收集整理的這篇文章主要介紹了
素数环问题---深度搜索遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1264: 素數環
時間限制:?1 Sec??內存限制:?128 MB提交:?29??解決:?8
[提交][狀態][討論版]
題目描述
有一個長度為n的環形序列由1,2,3,...,n組成,環中相鄰兩個整數和均為素數。你需要找到所有滿足條件的環。輸入
輸入n表示環的長度(n<=16)輸出
輸出從整數1開始的逆時針排列的所有環。樣例輸入
6
樣例輸出
1 4 3 2 5 6
1 6 5 2 3 4
提示
來源
西安交通大學復試機試題
?
#include<stdio.h> #include<string.h>//20以內的數最大和40 int prime[40]={1,1,0,0,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1,01,1,1,0,1,1}; int visit[21]; int ring[21];/* void Is_prime() {int i,j;prime[0]=prime[1]=1;for(i=2;i<=6;++i)for(j=i*i;j<40;j+=i)prime[j]=1; } */ void DFS(int k,int n) {int i;if(k==n+1&&prime[ring[n]+ring[1]]==0){//printf("1");for(i=1;i<=n;++i)printf("%d ",ring[i]);//不處理格式問題printf("\n");return;}for(i=1;i<=n;++i){if(!visit[i]&&!prime[i+ring[k-1]]){visit[i]=1;ring[k]=i;DFS(k+1,n);visit[i]=0;//還原!! 很重要!!! }} }int main() {int T,n;T=1; // Is_prime();while(scanf("%d",&n)!=EOF){//printf("Case %d:\n",T++);if(n==1){printf("1 \n");continue;}if(n&1){//printf("No Answer\n");continue;}memset(visit,0,sizeof(visit));visit[1]=ring[1]=1;DFS(2,n);}return 0; }
?
轉載于:https://www.cnblogs.com/xiaoyunoo/p/6514702.html
總結
以上是生活随笔為你收集整理的素数环问题---深度搜索遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做包皮手术多少钱啊?
- 下一篇: 个人作业1:小学四则运算——基于控制台