题干:
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
vector<int>dp(n + 1, 0);
dp[0] = 1;
for(int j = 0; j <= n; j++){
for(int i = 1; i <= m; i++){
if(j >= i)dp[j] += dp[j - i];
}
}
cout<<dp[n]<<endl;
}
跟组合总和IV一样是求排列,比如上3个台阶先1后2和先2后1是不一样的。