動態規劃 貪心 BFS 279 完全平方數

2021-10-06 21:12:39 字數 1124 閱讀 8237

給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, …)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。

示例 1:

輸入: n =

12輸出:

3

解釋: 12 = 4 + 4 + 4.

示例 2:

輸入: n =

13輸出:

2

解釋: 13 = 4 + 9.

動態規劃

設定dp陣列,對小於n的每個平方數設定dp=1;

從2開始遍歷每個數,對每個數再列舉每種平方數的湊法;

最後返回dp[n]即為答案;

class

solution

for(

int i=

2;i<=n;i++

)return dp[n];}

private

: vector<

int> dp;

};

貪心演算法

遞迴實現對最少次數的列舉;

(1)將小於等於n的平方數全部儲存在map中;

(2)最少數從1開始,遞迴得到最少樹——每次遞迴遍歷map;

(3)遞迴終止條件——cnt==1時;

class

solution

private

: unordered_map<

int,

bool

> map;

bool

istrue

(int n,

int cnt)

};

bfs+貪心
class

solution

} queue=next_queue;}}

private

: set<

int> queue;

vector<

int> cut;

};

注意點:使用兩個set,代替queue,可有效去重,加快速度;

279 完全平方數(BFS)

給定正整數 n,找到若干個完全平方數 比如 1,4,9,16,使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。這題有兩種解法,bfs 動態規劃 1 這題用bfs解題的關鍵是如何把題目要求轉換成資料結構 圖 我們這裡用的轉換條件是以0作為根節點,它的子節點應該滿足 i i 0 poll 被...

動態規劃 貪心

區別 動態規劃 全域性最優解中一定包含某個區域性最優解,但不一定包含前乙個區域性最優解,因此需要記錄之前的所有最優解。條件 最優子結構 重疊子問題。方法 自底向上構造子問題的解。例子 子串行最大和問題,滑雪問題 貪心演算法 條件 每一步的最優解一定依賴上一步的最優解。方法 從問題的某乙個初始解出發逐...

動態規劃和貪心

貪心演算法是種策略,思想。它並沒有固定的模式 比如最簡單的揹包問題 用貪心的思想去做,就可能有很多種方法 價效比最高的 價值最高的 重量最輕的 而你沒辦法確保你所選擇的貪心策略對所有的情況都是絕對最優的 動態規劃的思想是分治 解決沉餘 把乙個複雜的問題分解成一塊一塊的小問題 每乙個小問題中得到最優解...