//N个盘子,M个苹果
//i个盘子放j个苹果
//若j>=i有两种情况
//1:有空盘 2:没有空盘
//若没有空盘 ,则令当前排放种类数 与 每个盘子都减少一个苹果时的排放种类数 相同
//若有空盘,那么当前排放种类数 与 去掉一个空盘时的排放种类数 相同
//若j<i 也就是盘子个数多于苹果数
//那么当前排放种类数 与去掉一个盘子时的排放种类数相同
//当考虑边界情况时,可以先把状态转移方程写出来,将最初的值带进去,根据题意,写出边界值。
#include<iostream>
using namespace std;
int dp[11][11];//dp[i][j]表示i个盘子里放j个苹果
int main(){
int M,N;
cin>>M>>N;
dp[0][0]=1;
for(int j=0;j<=M;j++){
for(int i=1;i<=N;i++){
if(j>=i){
dp[i][j]=dp[i][j-i]+dp[i-1][j];
}else{
dp[i][j]=dp[i-1][j];
}
}
}
cout<<dp[N][M];
return 0;
}

京公网安备 11010502036488号