亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

HDOJ(HDU).1016 Prime Ring Problem (DFS)

2019-11-11 07:25:02
字體:
來源:轉載
供稿:網友

HDOJ(HDU).1016 PRime Ring Problem (DFS) [從零開始DFS(3)]

從零開始DFS HDOJ.1342 Lotto [從零開始DFS(0)] — DFS思想與框架/雙重DFS HDOJ.1010 Tempter of the Bone [從零開始DFS(1)] —DFS四向搜索/奇偶剪枝 HDOJ(HDU).1015 Safecracker [從零開始DFS(2)] —DFS四向搜索變種 HDOJ(HDU).1016 Prime Ring Problem (DFS) [從零開始DFS(3)] —小結:做DFS題目的關注點 HDOJ(HDU).1035 Robot Motion [從零開始DFS(4)]—DFS題目練習 HDOJ(HDU).1241 Oil Deposits(DFS) [從零開始DFS(5)] —DFS八向搜索/雙重for循環遍歷 HDOJ(HDU).1258 Sum It Up (DFS) [從零開始DFS(6)] —DFS雙重搜索/去重技巧 HDOJ(HDU).1045 Fire Net [從零開始DFS(7)]—DFS練習/check函數的思想

題意分析

給出數字n,要求將1-n的數字填成素數環,即相鄰2個數字的和為素數,按字典序依次輸出所有可能的組合。并且題目說過所有的組合開頭均為1。

哎呀這題太熟悉了,又是填數字的題目,似曾相識的感覺。 討論過的填數字的題目,傳送門:

HDOJ(HDU).1342 Lotto [從零開始DFS(0)] HDOJ(HDU).1015 Safecracker [從零開始DFS(2)]

如果獨立完成了幾道dfs的題目,就會發現:其實dfs只是工具,真正考察思維的,是什么時候進行dfs,怎樣進行dfs

1.什么時候進行dfs:即遞歸邊界。滿足何種情況就不進行搜索了,或者何種情況進行一個輸出,亦或是利用條件判斷去掉重復的情況。 2.怎樣進行dfs:是二重搜索(HDOJ.1342),還是四向搜索(HDOJ.1010),還是在數組中找遍所有的元素(HDOJ.1015)。也許以后還有八向搜索,全部搜索等等方式。

不難發現本題要求的是,兩個相鄰的數字和為素數,那么也就是在每次搜索的時候,都判斷一下前2個數字的和是否為素數,若是的話繼續進行搜索,否則終止。

需要注意的是,最后還需要判斷一下,最后一個數字和第一個數字的和是否為素數,因為題目的要求是素數環嘛。否則會出現多解。

為了方便判斷素數,最好在初始化的時候進行素數篩。規模在50即可(n上限是19,最大就是19+18=37)。

上代碼。

代碼總覽

/* HDOJ.1016 Author:pengwill Date:2017-2-5*/#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;bool visit[21],prime[51];int b[21],n;void init(){ // prime 0 & not prime 1 for(int i = 2; i<=sqrt(50) ;++ i) if(prime[i] == 0){ for(int j = 2;i*j<=50;++j) prime[i*j] = 1; } prime[1] = 0; visit[1] = true;b[1] = 1;}bool check(int depth){ if(depth == n+1)//對于最后要判斷首位數字的和是否為素數 if(prime[b[1]+b[depth-1]] == 0 && prime[b[depth-2]+b[depth-1]] == 0) return true; else return false; else if(prime[b[depth-2]+b[depth-1]] == 0) return true;//若不是最后就直接判斷前2個即可 else return false;}void print(){ for(int i = 1;i<=n; ++i) if(i == 1) printf("%d",b[i]); else printf(" %d",b[i]); printf("/n");}void dfs(int depth){ if(false == check(depth)) return; if(depth == n+1){ //輸出 print(); return; } for(int i = 2; i<=n ;++i){ if(!visit[i]){ visit[i] = 1; b[depth] = i; dfs(depth+1); visit[i] = 0; } }}int main(){ int t = 1; init(); while(scanf("%d",&n) != EOF){ printf("Case %d:/n",t++); if(1==n) printf("1/n"); else dfs(2);//第一位是1,故從深度為2開始dfs printf("/n"); } return 0;}

對n為1的時候進行特判。 init函數打50規模的素數表,然后把1置為訪問過。若n不為1,對深度為2進行dfs。 每次在遞歸調用dfs之前,首先檢查一下前邊2個數的和(depth-1和depth-2)是否為素數。(因為b[0]為0,當depth為2的時候也可以直接調用check函數,不用特判)。需要注意的是,當depth為n+1的時候,check需要檢查兩項內容:一是剛才說的前兩個數的和是否為素數,二是最后一個數和第一個數的和是否為素數。這樣就能保證是素數環了。

本題還有一個坑點,就是輸出格式。輸出可能組合的時候注意是每個數字之間有一個空格,也就是在行末尾只有一個換行符。題目還說了在每種case之后輸出個空行,也就是說不是每組數據之間(原文表述是 Print a blank line after each case. 是after,不是between)。 所以最后還是有一個空行的。

此題不難,dfs活學活用才是王道?。。?/p>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av免费看网站| 日韩福利伦理影院免费| 亚洲免费一级电影| 国产精品福利在线观看网址| 国产精品入口日韩视频大尺度| 亚洲一区二区中文字幕| 国产精品久久久久久超碰| 国产精品入口福利| 97涩涩爰在线观看亚洲| 欧美日本精品在线| 国产99在线|中文| 国产精品国语对白| 欧美日韩国产综合新一区| 亚洲天堂男人天堂女人天堂| 久久福利网址导航| 日韩三级影视基地| 亚洲区中文字幕| 精品高清一区二区三区| 国产精品美女午夜av| 最好看的2019的中文字幕视频| 亚洲一区精品电影| 亚洲精品电影网在线观看| 中文字幕亚洲一区在线观看| 成人在线一区二区| 亚洲精品免费网站| 欧美日韩中文在线| 成人免费福利视频| 欧美大片大片在线播放| 欧美性高潮床叫视频| 精品久久在线播放| 久久久久久久999| 国产精品扒开腿做爽爽爽的视频| 97视频在线免费观看| 26uuu久久噜噜噜噜| 日韩电影免费观看在线| 欧美最猛性xxxxx亚洲精品| 97超视频免费观看| 在线观看日韩视频| 中文字幕自拍vr一区二区三区| 亚洲人免费视频| 亚洲va国产va天堂va久久| 久久99久久99精品中文字幕| 亚洲电影免费观看| 美女精品久久久| 国产精品极品尤物在线观看| 国产精品中文久久久久久久| 亚洲网站在线看| 美女久久久久久久| 国产精品大陆在线观看| 4444欧美成人kkkk| 欧美国产中文字幕| 亚洲精品久久久久中文字幕二区| 久久久久久中文| 国模叶桐国产精品一区| 国产精品久久久久不卡| 欧美电影免费观看大全| 亚洲欧美中文日韩在线| 中文字幕欧美日韩| 韩剧1988免费观看全集| 亚洲精品中文字幕有码专区| 国产精品视频午夜| 5252色成人免费视频| 成人av在线网址| 国产成人高潮免费观看精品| 亚洲人成电影网站| 久久精品99久久久香蕉| 国产成人精品一区| 夜夜躁日日躁狠狠久久88av| 91久久在线播放| 亚洲国产99精品国自产| 亚洲欧美国产精品久久久久久久| 成人欧美一区二区三区在线湿哒哒| 日韩在线免费视频| 亚洲天堂精品在线| 日韩在线欧美在线国产在线| 伊人一区二区三区久久精品| 亚洲精品国偷自产在线99热| 日韩网站在线观看| 国产精品电影网站| 日韩小视频在线观看| 亚洲电影免费观看高清完整版| 欧美丝袜美女中出在线| 97精品国产97久久久久久春色| 国产精品r级在线| 亚洲国产精久久久久久久| 欧美日本啪啪无遮挡网站| 欧美成人在线免费| 国产精品视频地址| 国产精品一久久香蕉国产线看观看| xxxxx成人.com| 国产精品女人久久久久久| 亚洲欧美自拍一区| 国产中文欧美精品| 免费99精品国产自在在线| 日韩在线观看免费高清| 日韩精品在线观| 国产一区欧美二区三区| 亲子乱一区二区三区电影| 亚洲最大福利网站| 成人黄色av网站| 日韩欧美一区视频| 亚洲精品99久久久久| 国内精品久久久| 欧美国产精品日韩| 国产精品老女人视频| 欧美专区日韩视频| 另类图片亚洲另类| 韩国精品美女www爽爽爽视频| 国产成人高潮免费观看精品| 日韩欧美aaa| 国产亚洲精品久久久久久| 国产精品一区电影| 91精品国产777在线观看| 日韩中文字幕在线免费观看| 国产一区二区三区日韩欧美| 精品久久久久久久久中文字幕| 日本伊人精品一区二区三区介绍| 久久久久久久久中文字幕| 91沈先生作品| 91情侣偷在线精品国产| 欧美最顶级丰满的aⅴ艳星| 黑人狂躁日本妞一区二区三区| 91豆花精品一区| 色婷婷**av毛片一区| 免费不卡欧美自拍视频| 欧美多人爱爱视频网站| 日本久久精品视频| 日韩中文在线中文网三级| 国产精品第3页| 日韩欧美国产视频| 欧美成人一二三| 丝袜美腿精品国产二区| 亚洲国产精品久久久久久| 在线观看久久av| 曰本色欧美视频在线| 国外日韩电影在线观看| 国产精品青青在线观看爽香蕉| 国产精品丝袜视频| 主播福利视频一区| 国产精品老牛影院在线观看| 午夜精品理论片| 国产福利视频一区二区| 久久亚洲国产精品成人av秋霞| 欧美一区二区三区免费观看| 日本亚洲欧洲色α| 久久精品成人欧美大片古装| 亚洲一区亚洲二区亚洲三区| 亚洲欧美日韩中文在线制服| 国产一区二区三区在线免费观看| 最近2019年手机中文字幕| 美日韩精品视频免费看| 久久久亚洲成人| 亚洲最新中文字幕| 亚洲欧美在线一区| 97在线日本国产| 亚洲国产欧美一区二区丝袜黑人| 成人免费视频网址| 97精品在线观看| 欧美国产第二页| 久久久久久亚洲精品中文字幕| 国产在线观看精品| 欧美精品激情blacked18| 欧美亚州一区二区三区| 91老司机精品视频|