传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1192
#include<iostream> using namespace std; #define N 100+10 int m,n,t; int f[N][N];//f[i][j]=i i个苹果放j个盘子的方案数 int main() { for(int i=1;i<N;i++)f[i][1]=1;//不管怎么放苹果,I个苹果放一个盘子都是0 for(int i=1;i<N;i++)f[1][i]=f[0][i]=1; for(int i=2;i<N;i++) for(int j=2;j<N;j++) { if(i-j>=0)f[i][j]+=f[i-j][j]; if(j>1)f[i][j]+=f[i][j-1]; } cin>>t; while(t--) { cin>>m>>n; // if(n>m)n=m; cout<<f[m][n]<<endl; } }