日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ - 2248 Addition Chains(dfs+迭代加深)

發布時間:2024/4/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ - 2248 Addition Chains(dfs+迭代加深) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:我們規定加法鏈有如下特點:

  • 現在給出一個數n,求該數的最短加法鏈

    題目分析:這個題首先我們可以枚舉所有可能性,并且進行適當的剪枝:

  • 當前長度大于等于最優解時回溯
  • 當前值等于n時,更新最優解
  • 當前值大于n時,直接回溯
  • 為了使整個序列盡快逼近n,我們可以從大到小枚舉
  • 當然經過分析大我們可以發現,這個題目的m最大在10左右

    再經過分析我們可以得知,每次加和構成新的一個數,都必須有最后一個數字的參與,不然的話肯定不是最優解,這樣我們就能將每次dfs時n*n的復雜度下降到了n

    這里我再掛一下迭代加深的定義和思想:(摘自zx學長的ppt)

    深度優先搜索每次選定一個分支,不斷深入,直至到達遞歸邊界才回溯。這種策略帶有一定的缺陷。

    搜索樹的每個節點的分支數目非常多,并且問題的答案在某個較淺的節點上。如果一開始就搜索錯了分支,就很可能在不包含答案的深層子樹上浪費很多時間。

    我們可以從小到大限制搜索深度,如果在當前深度限制下搜不到答案,就把深度限制增加,重新進行一次搜索。

    雖然該過程在深度限制為d時,會重復搜索第1--d-1層的節點,但是當搜索樹節點分支數目較多時,隨著層數的深入,每層節點會呈指數級增長,這點重復的搜索的節點與深層子樹的規模相比,實在是小巫見大巫了。

    當搜索樹的規模隨著層次的深入增長很快,并且我們能夠確保答案在一個較淺的層次時,可以迭代加深。

    ?說到這里,我們就可以利用迭代加深的思想每層搜索這個題目的答案了

    代碼:

    #include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=20;int n;int deep;//搜索樹的深度int a[N];bool dfs(int cnt) {if(cnt>deep)//當前深度搜索結束{if(a[deep]==n)//若找到答案,返回truereturn true;return false;}for(int i=cnt-1;i>=1;i--)//從大到小枚舉,可以保證不重不漏{a[cnt]=a[cnt-1]+a[i];if(a[cnt]>n)continue;if(dfs(cnt+1))return true;}return false; }int main() { // freopen("input.txt","r",stdin);a[1]=1;//直接設置好第一個數while(scanf("%d",&n)!=EOF&&n){if(n==1)//對1特判一下printf("1\n");else{deep=1;//初始化深度為第一層while(1){deep++;if(dfs(2))//每次從第二層開始搜索,搜到第deep層結束{printf("1");for(int i=2;i<=deep;i++)printf(" %d",a[i]);printf("\n");break;}} } }return 0; }

    ?

    超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的POJ - 2248 Addition Chains(dfs+迭代加深)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲激情三区 | 三男一女吃奶添下面 | 久热精品在线视频 | 日韩在线一卡二卡 | 国产又粗又黄又爽视频 | v99av| 韩国主播青草200vip视频 | 性色生活片 | 久久免费在线 | 播放灌醉水嫩大学生国内精品 | 日韩天堂在线视频 | 日本女人一区二区三区 | 国产福利免费看 | 熟女俱乐部五十路六十路av | 日韩avv| 亚洲av综合一区二区 | 女同性恋一区二区三区 | 超碰碰碰碰| 91久久精品一区二区 | 欧美精品乱码 | 97精品在线 | 在线一级视频 | 欧美 日韩 中文字幕 | 99精品视频在线免费观看 | 国产精品久久久久久久毛片 | 超碰免费在线播放 | 日韩中文一区二区 | 在线aaa| 久久亚洲综合色 | 色撸撸在线视频 | 国产午夜影院 | 欧美日本亚洲 | 曰批免费视频播放免费 | 日韩成人综合 | 天天综合网在线观看 | 精品999久久久 | 国产三级日本三级在线播放 | 综合网av| 国产精品77 | 亚洲自拍色 | 久久频 | 欧美一区二区高清 | 诱惑av| 国产稀缺真实呦乱在线 | 蜜桃在线一区 | 少妇久久久久 | 日本成人激情视频 | 午夜精品网站 | 亚洲涩色| 国产中文字幕三区 | 午夜影院免费看 | 中文有码一区 | 国产偷亚洲偷欧美偷精品 | 岛国精品一区二区 | 亚洲精品成人网 | 国产91久久精品一区二区 | free欧美性69护士呻吟 | 手机在线亚洲 | 天天干天天看 | 成人午夜视频在线观看 | 香蕉视频在线免费 | 免费毛片一区二区三区久久久 | 五月激情啪啪 | 九九热精彩视频 | 色婷婷av一区二区三区麻豆综合 | 韩日av网站 | a级一a一级在线观看 | 色翁荡息又大又硬又粗又爽 | av少妇 | 欧美一级无毛 | 亚洲人成电影在线播放 | 老司机深夜视频 | 咪咪成人网 | 欧美在线视频播放 | 亚洲精品乱码久久久久久不卡 | 欧美性色a | 欧美jjzz| 亚洲一区二区在线电影 | 国产精品一区二区白浆 | 精品国产乱码久久久久久蜜柚 | 亚洲综合色在线 | 日韩性xxx| 在线看福利影 | 国产又粗又猛又黄又爽无遮挡 | 国产一区二区三区 | 亚洲色图丝袜美腿 | 91精品国产色综合久久不卡98 | 成年人三级网站 | 黄色大片在线播放 | www.爱色av.com| 中日韩黄色大片 | 污黄网站在线观看 | 日本特级毛片 | 91xxx在线观看 | 免费污视频 | 日韩精品极品视频在线观看免费 | xxx日本少妇 | 亚洲高潮 | 免费成人在线观看动漫 |