演算法題 尋找最少完全平方數

2021-08-01 15:40:28 字數 736 閱讀 5487

給出乙個正整數n,尋找最少的完全平方數,使他們的和為n

完全平方數:1,4,9,16 …

12 = 4+4+4

13 = 4+9

解法一:動態規劃

狀態轉移方程:f(n) = min 其中ai為小於等於n的完全平方數

int a[100005];

int func(int n)

int min_tmp;

int tmp;

for (auto i = 1; i <= n;++i)

解法二:最短路徑演算法

問題轉化為搜尋節點n到節點0的最短路徑,當兩個節點差值為完全平方數時,節點間存在一條路徑,路徑長度均為1。

int bfsfunc(int n)

for (auto i = 1; i*i <= num;++i)

}return -1;

}

改進:使用記錄表,避免重複的入隊

int bfsfunc(int n)

for (auto i = 1; i*i <= num;++i)

q.push(make_pair( tmp, step + 1));

visited[tmp] = 1;}}

return -1;

}

整理 最少完全平方數

費馬四平方數猜想指出,任意自然數都可以分解成不超過四個完全平方數的和 eg 144 122 14 12 22 32 現在給出自然數n n 60000 希望知道n最少可以分解成多少個完全平方數。思路 動態規劃 1 第一次迴圈找出本身為完全平方數的那些數,標記為 1 2 第二個迴圈把由兩個平方數之和,三...

完全平方數

完全平方數 time limit 10000ms memory limit 65536k total submit 44 accepted 42 case time limit 1000ms description 由1 9九個數字組成的全排列可以被看作是乙個九位數,程式設計求出這些九位數中第n個完...

完全平方數

coding utf8 python3 題目 完全平方數 乙個整數,它加上100和加上268後都是乙個完全平方數 求該數是多少 數字 1,1000 中,符合條件的數 python sqrt num.py b 1 e 1000 import sys,getopt import math defint ...