中山网站建设哪家好常见的手机网站
news/
2025/10/9 13:02:12/
文章来源:
中山网站建设哪家好,常见的手机网站,成长厉程网站,今天最新的新闻class Solution {
public: int climbStairs(int n) { vectorintdp(n1,0); dp[0]1; for(int j0;jn;j){ for(int i1;i2;i){ if(ji) dp[j]dp[j-i]; } } return dp[n]; }
};
这个题还是说想清楚 这个因为有1和2 阶的情况 所以i就是从1开始遍历 然后小于等于…class Solution {
public: int climbStairs(int n) { vectorintdp(n1,0); dp[0]1; for(int j0;jn;j){ for(int i1;i2;i){ if(ji) dp[j]dp[j-i]; } } return dp[n]; }
};
这个题还是说想清楚 这个因为有1和2 阶的情况 所以i就是从1开始遍历 然后小于等于2 就是1和2这两种情况 // 版本一
class Solution {
public:int coinChange(vectorint coins, int amount) {vectorint dp(amount 1, INT_MAX);dp[0] 0;for (int i 0; i coins.size(); i) { // 遍历物品for (int j coins[i]; j amount; j) { // 遍历背包if (dp[j - coins[i]] ! INT_MAX) { // 如果dp[j - coins[i]]是初始值则跳过dp[j] min(dp[j - coins[i]] 1, dp[j]);}}}if (dp[amount] INT_MAX) return -1;return dp[amount];}
};
这个第二题主要就是那个if判断 之前为什么不用加呢 因为之前都是初始化为0 因此加不加没影响 但是你现在设置为这个最大值 一是会导致溢出 二是你会改变dp[j]的值 主要是你会改变dp[j]初始化的值 后面就会造成一系列的错误 class Solution {
public: int numSquares(int n) { vectorint dp(n1,INT_MAX); dp[0]0; for(int i1;i*in;i){ for(int ji*i;jn;j){ if(dp[j-i]!INT_MAX) dp[j]min(dp[j],dp[j-i*i]1); } } return dp[n]; }
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932565.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!