题干:
代码:
#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是不一样的。