题目描述:

方法1:排列形式的完全背包问题

#include <iostream>
#include <vector>
using namespace std;

int climb(int n,int m){
    vector<int> dp(n+1,0);
    dp[0] = 1;
    for(int j=1;j<=n;j++){
        for(int i=1;i<=m;i++){
            if(j>=i) dp[j] += dp[j-i];
        }
    }
    return dp[n];
}

int main(){
    int n,m;
    cin>>n>>m;
    int num = climb(n,m);
    cout<<num;
    return 0;
}