#include<bits/stdc++.h>
using namespace std;
int main(){int n,m;cin>>n>>m;vector<int> dp(33,0);dp[0]=1;for(int i=0;i<=n;i++){for(int j=1;j<=m;j++){if(i>=j)dp[i]+=dp[i-j];}}// return dp[n];cout<<dp[n]<<endl;}
当然注意 力扣是 核心代码模式,卡码网是ACM模式(要自己写输入和输出)
模版题,一遍过。dp数组如果初始化为INT_MAX,+1的时候就要跳过这些为最大值的了。
class Solution {
public:int coinChange(vector<int>& coins, int amount) {if(amount==0) return 0;vector<int> dp(amount+1,10001);dp[0]=0;for(int i=0;i<coins.size();i++){for(int j=coins[i];j<=amount;j++){dp[j]=min(dp[j],dp[j-coins[i]]+1);}}if(dp[amount]==10001) return -1;return dp[amount];}
};
模版题,一遍过。
class Solution {
public:int numSquares(int n) {vector<int> dp(n+1,10001);dp[0]=0;for(int i=1;i<=100;i++){for(int j=i*i;j<=n;j++){dp[j]=min(dp[j],dp[j-i*i]+1);}}return dp[n];}
};