C++ 中的平方根


假設我們有一個正整數 n,找到和為 n 的最少完美平方數。因此,如果該數為 13,則輸出為 2,因為數字為 13 = 9 + 4

為了解決這個問題,我們將遵循以下步驟 -

  • 建立一個動態規劃表,長度為 n + 1,並用無窮大填充
  • dp[0] := 0
  • 對於 i := 1,當 i*i <= n 時
    • x = i * i
    • 對於 j := x 到 n
      • dp[j] := dp[j] 和 1 + dp[j – x] 的最小值
  • 返回 dp[n]

讓我們看以下實現以獲得更好的理解 -

示例

 即時演示

#include <bits/stdc++.h>
using namespace std;
#define INF 1e9
class Solution {
   public:
   int numSquares(int n) {
      vector < int > dp(n+1,INF);
      dp[0] = 0;
      for(int i =1;i*i<=n;i++){
         int x = i*i;
         for(int j = x;j<=n;j++){
            dp[j] = min(dp[j],1+dp[j-x]);
         }
      }
      return dp[n];
   }
};
main(){
   Solution ob;
   cout << (ob.numSquares(147));
}

輸入

147

輸出

3

更新日期: 04-May-2020

440 次瀏覽

職業應援

完成課程取得認證

立即開始
廣告
© . All rights reserved.