給出乙個數字n,它可以由若干個完全平方數相加得到。這道題目需要求出,所需要的完全平方數的最小數量。
求最小的問題,可以用廣度優先搜尋演算法(bfs)求解。不難想出,這些完全平方數肯定比n要小。因此,我新建乙個陣列,稱為完全平方陣列,來儲存所有比n小的完全平方數。當然,如果在這個過程中,發現n本身就是完全平方數,那麼直接輸出1即可。
接下來,使用bfs求解。新建bfs陣列,bfs是每一步都需要求出所有情況。比如當有乙個完全平方數時,列出完全平方陣列中的值即可。當增加乙個完全平方數時,使完全平方陣列中的數兩兩相加,並刪除只有乙個完全平方數的情況,這樣陣列中全部是兩個完全平方數相加的情況。這樣,每增加乙個完全平方數,使陣列中的每個值與完全平方陣列中所有值分別相加。在這個過程中,如果遇到某一種情況的和為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.分析 之前曾做過一次這道題,當時是剛學了動態規劃演算法,然後正好拿這個題...
279 完全平方數
給定正整數 n,找到若干個完全平方數 比如 1,4,9,16,使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12 輸出 3 解釋 12 4 4 4.示例 2 輸入 n 13 輸出 2 解釋 13 4 9.其中dp i 表示正整數i最少能由多個完全平方數組成,那麼我們...