赞
踩
该题是完全背包问题,不需要考虑物品放入背包的先后顺序。
具体代码如下:
- class Solution {
- public:
- int change(int amount, vector<int>& coins) {
- vector<int>dp(amount+1,0);
- dp[0]=1;
- for(int i=0;i<coins.size();i++)
- {
- for(int j=coins[i];j<=amount;j++)
- {
- dp[j]+=dp[j-coins[i]];
- }
- }
- return dp[amount];
- }
- };
本题是完全背包问题,要考虑物品放入背包的先后顺序,因此要先遍历背包再遍历物品。
具体代码如下:
- class Solution {
- public:
- int combinationSum4(vector<int>& nums, int target) {
- vector<int>dp(target+1,0);
- dp[0]=1;
- for(int i=0;i<=target;i++)
- {
- for(int j=0;j<nums.size();j++)
- {
- if(i-nums[j]>=0&&dp[i]<INT_MAX-dp[i-nums[j]]){dp[i]+=dp[i-nums[j]];}
- }
- }
- return dp[target];
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。