日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

hdu 1016 Prime Ring Problem(DFS)

發(fā)布時(shí)間:2025/7/14 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 1016 Prime Ring Problem(DFS) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本題鏈接:點(diǎn)擊打開鏈接

本題大意:

? ? ? ? 輸入一個(gè)數(shù)n表示須要查找的數(shù)有n個(gè),而且這些數(shù)連成一個(gè)環(huán),隨意兩個(gè)相鄰的數(shù)之和都為素?cái)?shù)。

解題思路:

? ? ? ? 就是從1開始對(duì)每一個(gè)點(diǎn)進(jìn)行查找,符合條件的點(diǎn)就存到一個(gè)數(shù)組中,標(biāo)記找過的點(diǎn)。查找完一次就進(jìn)行輸出。然后取消標(biāo)記繼續(xù)查找,直至將1~n中的點(diǎn)從小到大均查找一次。詳細(xì)請(qǐng)參考代碼:

#include<stdio.h> #include<string.h> int mark[22]; int num[22]; int prime_num[12]={2,3,5,7,11,13,17,19,23,29,31,37}; int n; int is_prime(int a) {for(int i=0;i<12;i++)if(a==prime_num[i])return 1;return 0; } void print_num() {for(int i=1;i<n;i++)printf("%d ",num[i]);printf("%d\n",num[n]); } int dfs(int per,int post,int flag)//三個(gè)變量依次為此位置。與此位置相連的下一個(gè)位置,num數(shù)組中存放的位置 {if(!is_prime(per+post))//若此位置與下一位置之和不是素?cái)?shù),則不滿足條件。返回 return 0;num[flag]=post;//若滿足條件,記下“下一個(gè)位置”到num數(shù)組中 if(flag==n&&is_prime(post+1))//若已查找到了n個(gè)數(shù),而且第n個(gè)數(shù)與最先的位置1之和也為素?cái)?shù) {print_num();//則查找到一組,進(jìn)行輸出 return 1;//結(jié)束此次查找 }mark[post]=1;//若還沒有查找完,則繼續(xù)查找,將已經(jīng)找過的點(diǎn)標(biāo)記 for(int i=2;i<=n;i++)if(!mark[i]&&dfs(post,i,flag+1))break;mark[post]=0;//查找完一次后。可能還存在其它序列,所以取消標(biāo)記,使后面可繼續(xù)進(jìn)行查找 return 0; } int main() {int t=1;while(scanf("%d",&n)!=EOF){for(int i=1;i<=n;i++){mark[i]=0;//標(biāo)記該數(shù)是否使用過 }num[1]=1;//存放序列,1肯定在 printf("Case %d:\n",t++);if(n==1)printf("1\n");for(int i=2;i<=n;i++)//首先查找1的下一位 dfs(1,i,2);//2表示i在num數(shù)組中存放的位置 printf("\n");}return 0; }

總結(jié)

以上是生活随笔為你收集整理的hdu 1016 Prime Ring Problem(DFS)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。