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

2021-08-30 15:58:36 字數 464 閱讀 6978

之前沒怎麼學過a*,ida*,迭代加深這些搜尋演算法,只知道搜尋+剪枝,真是慚愧……

錯誤演算法

因為很容易發現,在第i位上你最多能湊出2i-1大小的數,所以我們就貪心湊出小於等於給定的m的最大的那個2n,然後再去湊出m-2n ……然後用乙個桶記錄一下哪些數需要湊出來,最後掃一遍輸出即可。

聽上去似乎沒什麼問題,好像出幾個資料試試也沒什麼問題?

試試30呢?

用貪心:1,2,4,6,8,14,16,30 共8個數

正解:1,2,4,8,10,20,30 共7個數

emm看來貪心沒辦法啦

100pts(因為不知道部分分)

考慮到這個m的範圍非常小啊,最多也只有5000啊,所以答案一定不會大到**去。

搜尋演算法雖然用得最多的就是bfs和dfs,但是在此基礎上衍生出的優化剪枝是非常多的,比如a*的估價函式,比如迭代加深的層數限制,都可能讓程式跑得更快。所以多學點沒壞處的啊~

華為機試練習 動態規劃 最大遞增數列

題目描述 redraiment是走梅花樁的高手。redraiment總是起點不限,從前到後,往高的樁子走,但走的步數最多,不知道為什麼?你能替redraiment研究他最多走的步數嗎?樣例輸入 2 5 1 5 4 5 樣例輸出 提示example 6個點的高度各為 2 5 1 5 4 5 如從第1格...

迭代加深 遞增數列

遞增數列 描述依次給你乙個遞增的數列,第一次給你1,第二次開始,每次給的數字是之前某兩次和。告訴你乙個數字m,表示第n次給你的數字,求最小的n,同時列印出這n個數的數列,有多組解輸出任意 輸入一行,只有乙個整數m 輸出第一行輸出n。第二行輸出數列,每兩個數之間有且僅有乙個空格。樣例輸入 4樣例輸出 ...

日常練習 算

問題背景 zhx幫他妹子做數學題。問題描述 求 如 n 3,m 3,這個值為1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 56。輸入格式 僅一行,包含兩個數 n和 m.輸出格式 僅一行,包含所求的答案 mod10 9 7的值。樣例輸入 3 3 樣例輸出 資料範圍與規定 對於...