完全平方數

2022-06-02 22:51:06 字數 1280 閱讀 5277

給定正整數 n,找到若干個完全平方數(比如1, 4, 9, 16, ...)使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。

示例 1:

輸入: n = 12

輸出:

3解釋:

12 = 4 + 4 + 4.

示例 2:

輸入: n = 13

輸出:

2解釋:

13 = 4 + 9.

解法一:  bfs廣度優先遍歷

當每一次都可以判斷出多種情況,有多次的時候就適合用bfs-廣度優先遍歷

使用bfs應注意:

佇列:用來儲存每一輪遍歷得到的節點;

標記:對於遍歷過的節點,應該將它標記,防止重複遍歷。

我們將它第乙個平方數可能出現的情況做分析 只要 i * i < n 就行

再在此基礎上進行二次可能出現的平方數分析

注意:為了節省遍歷的時間,曾經( n - 以前出現的平方數) 這個值出現過,則在此出現這樣的數時直接忽略。

舉個栗子:

解法二: 動態規劃

首先初始化長度為n+1的陣列dp,每個位置都為0

如果n0,則結果為0

對陣列進行遍歷,下標為i, 每次都將當前數字先更新為最大的結果,即dp[i]=i,比如i=4,最壞結果為4=1+1+1+1即為4個數字

動態轉移方程為:dp[i] = min(dp[i], dp[i - j * j] + 1)i表示當前數字,j*j表示平方數

時間複雜度:o(n*sqrt(n)),sqrt為平方根

public

int numsquares(int

n) }

return

dp[n];

}

完全平方數

完全平方數 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 ...

完全平方數

程式設計判斷乙個非負整數是否為完全平方數。乙個非負整數n是完全平方數當且僅當存在非負整數m,使得n m2n m 2n m2。要求如下 輸出1表示是完全平方數,輸出0表示不是。比如,輸入非負整數0時,應輸出1。不能有其他多餘的cin和cout語句。注 0是完全平方數 include using nam...