放苹果

原创 2018年04月16日 13:52:07

题目要求:

把m个同样的苹果放在n个同样的盘子里,允许有得盘子空着不放,问共有多少种不同的方法。注意,5,1,1和1,5,1是一种分法。

解题思路:

设f(m,n)为m个苹果,n个盘子的放法数目,有两类不同的摆放方法:至少有一个盘子空着和所有盘子都不空。先对n作讨论,当n>m即盘子数多于苹果数时,必定有n-m个盘子是空着的,此时if(n>m),f(m,n)=f(m,m) 。当n大于m时,又分为两种情况,即至少有一个盘子空着和所有盘子都不空,前一种情况,至少有一个盘子空着,即有两个,三个,四个盘子空着,可以用递归实现,即f(m,n)=f(m,n-1),后一种情况是,一个盘子里可以先放一个苹果,再放剩下的苹果,即可以从每个盘子里拿走一个苹果,不影响最后的数目,即f(m,n)=f(m-n,n),两种情况加起来就是总的放法数目。

代码:

#include <stdio.h>
int f(int x,int y)
{
	if(x==0||y==1)
		return 1;
	if(x<y)
		return f(x,x);
	else 
	return f(x,y-1)+f(x-y,y);
}

int main()
{
	int t,m,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d %d",&m,&n);
		printf("%d\n",f(m,n));
	}
	return 0;
}


百炼-1664-放苹果-C语言-递归算法入门

递归算法入门题,不过如果数字再大一点可能要考虑记忆化搜索了。 /************************************************** **文件名:百炼-1664 **...
  • OrdinaryCrazy
  • OrdinaryCrazy
  • 2017-08-06 21:37:39
  • 497

CCF NOI1073 放苹果

问题链接:CCF NOI1073 放苹果。 时间限制: 1000 ms  空间限制: 262144 KB 题目描述    把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有...
  • tigerisland45
  • tigerisland45
  • 2017-04-27 22:23:29
  • 1002

放苹果(递归)

Description把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 Input第一行是测试数据的数目t(0 ...
  • MyComeIn
  • MyComeIn
  • 2015-08-04 22:59:09
  • 1213

用“分治算法”解决“放苹果问题”

题目:放苹果问题。 输入n为要测试数据的数目,以下每行M(M>=1)和N(N 和N个相同的盘子,求有多少中不同的放法。 思路:...
  • u013797947
  • u013797947
  • 2014-09-01 13:11:55
  • 803

POJ1664:放苹果(DFS)

Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 Input 第一行是测试数据的数目t(0...
  • libin56842
  • libin56842
  • 2013-11-30 21:06:16
  • 2336

POJ 1664 /NYOJ 758 放苹果问题(递归)

分苹果 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? (注意:假如有3个盘子...
  • huihui1094667985
  • huihui1094667985
  • 2016-07-25 21:38:10
  • 861

C++递推算法之放苹果

放苹果:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 #include int main() { int ...
  • C20190413
  • C20190413
  • 2017-05-26 13:06:00
  • 1213

递归基础之放苹果

递归基础之放苹果
  • Dorlife
  • Dorlife
  • 2017-04-29 16:15:04
  • 472

ACM之放苹果

题目描述: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入样例: 1 7 3 输...
  • shuipingzildy
  • shuipingzildy
  • 2013-03-15 14:52:28
  • 845

poj 动态规划DP - 1664 放苹果

dp[m][n]表示m个苹果放n个盘子里面. 此问题可分为两个子问题:当m 所以m 当m>=n时,可分为两种放法,一种为至少有一个盘子为空,则有dp[m][n-1]种放法。 另外为n个盘子都不...
  • u010006643
  • u010006643
  • 2015-04-30 19:41:51
  • 761
收藏助手
不良信息举报
您举报文章:放苹果
举报原因:
原因补充:

(最多只允许输入30个字)