放苹果

一世执手 提交于 2020-02-22 12:41:33

两种解法

int fun19(int n, int m)
{
	if (n == 0)
		return 1;
	if (m == 0)
		return  0;
	if (m > n)
		return fun19(n, n);
	else
		return fun19(n, m - 1) + fun19(n - m, m);
}
int main(void)
{
	int a[15][15] = { 0 };
	for (int i = 1; i < 15; i++)
	{
		a[0][i] = 1;   // 0个苹果
		a[i][0] = 0;   // 0个篮子
	}
	for (int n = 1; n < 15; n++)
	{
		for (int m = 1; m < 15; m++)
		{
			if (m > n)
				a[n][m] = a[n][n];
			else
				a[n][m] = a[n][m - 1] + a[n - m][m];
		}
	}
	
	int M, N, k;
	printf("请输入有几个苹果并回车:");
	scanf("%d", &M);
	printf("请输入有几个篮子并回车:");
	scanf("%d", &N);

	//k = a[M][N];           //动态规划
     k = fun19(M, N);       // 递归
	printf("%d\n", k);

	system("pause");
	return 0;
}

  

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!