素数环问题---深度搜索遍历
生活随笔
收集整理的這篇文章主要介紹了
素数环问题---深度搜索遍历
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1264: 素?cái)?shù)環(huán)
時(shí)間限制:?1 Sec??內(nèi)存限制:?128 MB提交:?29??解決:?8
[提交][狀態(tài)][討論版]
題目描述
有一個(gè)長(zhǎng)度為n的環(huán)形序列由1,2,3,...,n組成,環(huán)中相鄰兩個(gè)整數(shù)和均為素?cái)?shù)。你需要找到所有滿足條件的環(huán)。輸入
輸入n表示環(huán)的長(zhǎng)度(n<=16)輸出
輸出從整數(shù)1開(kāi)始的逆時(shí)針排列的所有環(huán)。樣例輸入
6
樣例輸出
1 4 3 2 5 6
1 6 5 2 3 4
提示
來(lái)源
西安交通大學(xué)復(fù)試機(jī)試題
?
#include<stdio.h> #include<string.h>//20以內(nèi)的數(shù)最大和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]);//不處理格式問(wèn)題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; }
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaoyunoo/p/6514702.html
總結(jié)
以上是生活随笔為你收集整理的素数环问题---深度搜索遍历的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 做包皮手术多少钱啊?
- 下一篇: 个人作业1:小学四则运算——基于控制台