放苹果

来源:互联网 发布:sql 身份证 性别 编辑:程序博客网 时间:2024/04/28 00:35

问题描述:


把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(注意:5,1,1和1,5,1是同一种分法)


代码如下:



#include <stdio.h>


int f(int m,int n)   //m: panzi   n:apple
{
if(m==1||n==0)return 1;
if(m>n)return f(n,n);
else
return f(m-1,n)+f(m,n-m);
}
int main()
{
int x,y,t;
while(scanf("%d%d",&x,&y)!=EOF)
{
t=f(y,x);
printf("%d\n",t);
}
return 0;
}



思路分析:


这是一个简单的递归,刚开始的时候没有想到这种思路,看过用递归的方式感觉好神奇,尤其是这种思路,顿时让自己的脑子开阔了许多。感觉编程最重要的就是思想,有了思想一切就不是问题了,所以说培养思想太重要了。

0 0