題目描述:
給定正整數,找到若干個完全平方數(比如1,4,9,16)使得它們的和等於n。你需要讓組成和
的完全平方數的個數達到最少。
示例 1:
input:n=12
output:3
說明:12=4+4+4
示例 2:
input:13
output:2
說明:13=4+9
解題思路:
這道題首先想到的是動態規劃,當n=1時,最少只需要1個完全平方數1即可。因此dp[i]:表示
完全平方和為i的最小個數初始狀態dp[i]均取最大值i,即1+1+1...+1,i個1;dp[0]=0
轉移方程:dp[i]=min(dp[i],dp[i-j*j]+1),其中,j是平方數,j=1~k,其中k*k要
保證<=i。簡而言之,完全平方數和為i的最大個數與(完全平方數和為i-j*j的最小個數+完全
平方和為j*j的最小個數)可以看到dp[j*j]是等於1的。
c++語言實現
#include #include #include using namespace std;
class solution
int numsquare()
}return dp[num];
}private:
const int num;
};int main(int argc,char* ar**)
} return dp[n]
}func min(x,y int)intelse
}func main()
CUDA 求平方和
include include include define data size 1048576 int data data size void generatenumbers int number,int size printf sum cpu d n sum system pause 要怎麼把計...
試題 演算法訓練 求平方和
試題 演算法訓練 求平方和 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 請用函式過載實現整型和浮點習型的兩個數的平方和計算 輸入格式 測試資料的輸入一定會滿足的格式。2 2 2行2列,第1行整型,第2行浮點型 輸出格式 要求使用者的輸出滿足的格式。2 1 2行1列,第1行整型...
求完全平方數
問題如下 乙個整數,它加上100後是乙個完全平方數,再加上268又是乙個完全平方數,請問該數是多少?解題如下 求完全平方數 from math import sqrt i 100 迴圈起點 i 100 0 active true 迴圈控制的標識 while active judge 1 sqrt i...