C++递推算法之放苹果

Description
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
Input
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
Output
对输入的每组数据M和N,用一行输出相应的K。
Sample Input
1
7 3
Sample Output
8
Description
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
Input
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
Output
对输入的每组数据M和N,用一行输出相应的K。
Sample Input
1
7 3
Sample Output
8
#include<cstdio>
int main()
{
	int i,j,k,n,m;
	int t;
	scanf("%d",&t);
	for(int o=1;o<=t;o++)
	{
		int f[101][101];
		scanf("%d%d",&m,&n);
		for(i=0;i<=m;i++)
			for(j=0;j<=n;j++)
			{
				if(i==0||j==1) f[i][j]=1;
				else
				{
					if(j>i) f[i][j]=f[i][i];
					else f[i][j]=f[i][j-1]+f[i-j][j];
				}
			}
		printf("%d\n",f[m][n]);
	}
	return 0;
}

《C++递推算法之放苹果》

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/c20190413/article/details/72765577
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞