迭代加深 遞增數列

2021-08-30 15:39:42 字數 842 閱讀 2512

遞增數列

描述依次給你乙個遞增的數列,第一次給你1,第二次開始,每次給的數字是之前某兩次和。告訴你乙個數字m,表示第n次給你的數字,求最小的n,同時列印出這n個數的數列,有多組解輸出任意

輸入一行,只有乙個整數m

輸出第一行輸出n。第二行輸出數列,每兩個數之間有且僅有乙個空格。

樣例輸入

4樣例輸出

31 2 4

提示本次是數字4。第一次1,第二次2,第三次(當前)4 。

測試點編號m 測試點編號 m

1 <=20 6 <=1000

2 <=30 7 <=2500

3 <=40 8 <=3000

4 <=50 9 <=4000

5 <=60 10 <=5000

analysis

可能我和迭代加深不熟……完全沒有想過可以迭代加深(限制搜尋深度)

但……可能也是可想的

因為如果只是一般的搜尋,到處亂走,很可能就一直找不到答案,而且就算找到了答案也不一定是最優的

那我們就可以思考迭代加深,因為最後需要的答案就是深度嘛

然後就這樣就可以a啦

不知道考場上在想什麼,連列舉都不知道了……可能是今天開運動會,腦子跑到操場上去了,找不回來了。。。

code

#include

using

namespace std;

int m,k,a[

100000];

bool

dfs(

int dep,

int now)

return

false;}

intmain()

日常練習 遞增數列 迭代加深

之前沒怎麼學過a ida 迭代加深這些搜尋演算法,只知道搜尋 剪枝,真是慚愧 錯誤演算法 因為很容易發現,在第i位上你最多能湊出2i 1大小的數,所以我們就貪心湊出小於等於給定的m的最大的那個2n,然後再去湊出m 2n 然後用乙個桶記錄一下哪些數需要湊出來,最後掃一遍輸出即可。聽上去似乎沒什麼問題,...

迭代加深 索道

這天,tom帶一群小朋友們去爬山。經歷了千辛萬苦,小朋友們終於爬上了山頂,但是疲倦的他們再也不想徒步走下山了。tom只好花錢讓它們坐索道下山。索道上的纜車最大承重量為w,而n個小朋友的重量分別是c1 c2 cn。當然,每輛纜車上的小朋友的重量之和不能超過w。每租用一輛纜車,tom就要付1美元,所以他...

迭代加深搜尋

深度優先搜尋每次選定乙個分支,然後往下搜尋,直到遞迴邊界 才回溯。這種策略有一點缺陷,那就是當搜尋樹的分支數目特別 多,並且答案在某個較淺的節點上,如果dfs在一開始就選錯了分 支,那就會在沒有答案的深層次浪費時間 當搜尋樹規模隨著層次的深入增長很快,並且能 夠確保答案在乙個較淺的節點上時,就可以使...