題目描述:
給定正整數 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.分析 之前曾做過一次這道題,當時是剛學了動態規劃演算法,然後正好拿這個題...