力扣hot00 279 完全平方數

2021-10-12 07:16:52 字數 801 閱讀 4928

題目描述:

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

示例 1:

輸入: n = 12

輸出: 3

解釋: 12 = 4 + 4 + 4.

示例 2:

輸入: n = 13

輸出: 2

解釋: 13 = 4 + 9.

解題思路:

這道題一開始做的時候想的是能不能直接找到什麼規律,常規方法解出來,但是找不到,寫了一下**也還是錯的就去看題解去了。

這題是一道動態規劃問題,找到動態規劃的思路:

首先隨便考慮乙個數,12,要將它變成完全平方數的和,首先第一步要找到乙個完全平方數,在加上剩餘的完全平方數。比如12 = 1+11,12 = 4+8 ,12 = 9+3。在這裡我們可以看到12的最小個數取決於11,8,3的完全平方數的最小個數。因為取1,4,9的時候都是用了一次機會。所以可以得到動態規劃地推關係式:

dp[i]表示第i個數的最少完全平方數。

for(int j=1;i-j×j>=0;j++)

有個這個思想就可以寫**:

class

solution

for(

int i=

1;i<=n;i++)}

return dp[n];}

};

看了題解很多人說這是揹包問題,目前還沒有研究揹包問題。等研究完了再來補充。

(力扣)279 完全平方數

給出乙個數字n,它可以由若干個完全平方數相加得到。這道題目需要求出,所需要的完全平方數的最小數量。求最小的問題,可以用廣度優先搜尋演算法 bfs 求解。不難想出,這些完全平方數肯定比n要小。因此,我新建乙個陣列,稱為完全平方陣列,來儲存所有比n小的完全平方數。當然,如果在這個過程中,發現n本身就是完...

再論力扣第279題 完全平方數

題目 給定正整數 n,找到若干個完全平方數 比如1,4,9,16,使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。示例1 輸入 n 12 輸出 3 解釋 12 4 4 4.示例2 輸入 n 13 輸出 2 解釋 13 4 9.分析 之前曾做過一次這道題,當時是剛學了動態規劃演算法,然後正好...

再論力扣第279題 完全平方數

題目 給定正整數 n,找到若干個完全平方數 比如1,4,9,16,使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。示例1 輸入 n 12輸出 3解釋 12 4 4 4.示例2 輸入 n 13輸出 2解釋 13 4 9.分析 之前曾做過一次這道題,當時是剛學了動態規劃演算法,然後正好拿這個題...