遞增數列
描述依次給你乙個遞增的數列,第一次給你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在一開始就選錯了分 支,那就會在沒有答案的深層次浪費時間 當搜尋樹規模隨著層次的深入增長很快,並且能 夠確保答案在乙個較淺的節點上時,就可以使...