日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

完美平方

發(fā)布時(shí)間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 完美平方 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給一個(gè)正整數(shù) n, 找到若干個(gè)完全平方數(shù)(比如1, 4, 9, ... )使得他們的和等于 n。你需要讓平方數(shù)的個(gè)數(shù)最少。

樣例

給出 n =?12, 返回?3?因?yàn)?12 = 4 + 4 + 4。
給出 n =?13, 返回?2?因?yàn)?13 = 4 + 9。

高級版本的動態(tài)規(guī)劃
簡單的動態(tài)規(guī)劃 一般都是從dp[n]到dp[n+1]?
這里是 dp[n]到dp[n+i* i]
而且i是0到一個(gè)不溢出的最大值。 這個(gè)思路比較難想到,是一個(gè)難點(diǎn)
另一個(gè)就是dp長度是n+1,i和j都是從0開始, 這個(gè)邊界條件的處理讓程序簡單起來

?

這個(gè)看起來很優(yōu)美簡潔的程序有一個(gè)很大的問題。 但是lintcode 竟然過了。。。

就是輸入值是最大值的時(shí)候,第八行直接報(bào)錯(cuò)。

可能這個(gè)題考察的不是這個(gè)。想兼容這種情況? 可以dp[n]用一個(gè)變量來單獨(dú)保存,就是程序里面判斷起來可能low一點(diǎn)兒,大家有沒有更好的方法呢?(假裝有人會看)

?

?

?

public class Solution {/** @param n: a positive integer* @return: An integer*/public int numSquares(int n) {// write your code hereint[] dp = new int[n+1];for(int i =0; i<=n; i++){dp[i] = Integer.MAX_VALUE;//初始化數(shù)組 }for(int i = 0;i*i <= n; i++){dp[i*i] = 1; //把最小的這種完全平方的存進(jìn)去 }for(int i = 0; i <= n; i++){//這里從零開始 邊界條件的處理讓整個(gè)程序簡介起來for(int j = 0; i+j*j <= n; j++){//和正常dp不同的地方,不是從dp[n]到dp[n+1]的操作 而是每次都是從dp[n]到若干個(gè)dp的逼近dp[i+j*j] = Math.min(dp[i]+1,dp[i+j*j]);}}return dp[n];} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/tobemaster/p/7858558.html

總結(jié)

以上是生活随笔為你收集整理的完美平方的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。