518 零钱兑换II
class Solution {
public:
int change(int amount, vector
vector<int> dp(5001, 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];
}
};
377 组合总和IV
class Solution {
public:
int combinationSum4(vector
vector
dp[0] = 1;
for(int j = 0; j <= target; ++j)
{
for(int i = 0; i < nums.size(); ++i)
{
if(j >= nums[i] && dp[j] < INT_MAX - dp[j - nums[i]])
{
dp[j] += dp[j-nums[i]];
}
}
}
return dp[target];
}
};
爬楼梯
include
include
using namespace std;
int main()
{
int m;
int n;
while(cin >> n >> m)
{
vector
dp[0] = 1;
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= m; ++j)
{
if(i >= j)
{
dp[i] += dp[i-j];
}
}
}
cout << dp[n] << endl;
}
return 0;
}