//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; }