給定正整數 n,找到若干個完全平方數(比如1, 4, 9, 16, ...
)使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。
示例 1:
輸入:n =示例 2:12
輸出:3解釋:12 = 4 + 4 + 4.
輸入:n =13
輸出:2解釋:13 = 4 + 9.
動態規劃
class solution
}return dp[n];
}};
使用佇列輔助進行廣度優先搜尋。
class solution }}
steps += 1; //當前移動了一步, 相當於對當前的每乙個可能的平方和數都判斷了一遍,但是還可以減去平方和數後繼續判斷
}return 0;
}};
使用回溯法(深度優先)。從n的平方根到1進行搜尋,直到當前的n為零。
class solution
//sqrt(reminanum)將reminanum開方
for (int num = sqrt(reminanum); num > 0; --num)
} }public:
int numsquares(int n)
};
leetcode 完全平方數(深度優先搜尋、廣度優先搜尋、動態規劃)
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最少能由多個完全平方數組成,那麼我們...
279 完全平方數
include include include using namespace std class solution return res int main 把這個問題轉換為乙個無權圖找最短路徑以後,因為有很多路徑可以到達乙個同乙個節點 12 1 11 4 7 12 4 8 1 7 比如12就可以通...
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的完全平方數的最小個數 那麼,有i j ...