2011年11月30日星期三

POJ 1664 放苹果 递归水题

开始不知道处理M个苹果放N个碟子没有空的问题,和同学讨论了一下,这样可以理解为先在每个碟子上放一个苹果,这样就剩下M - N个苹果,可以在N个碟子上任意放。。。递归了 = =
想清楚了就真的水了。。。。囧~
所以说有时候递归的思路真的蛮清晰的= =!!



#include“cstdio”
int f(int a,int b)
{
if(b == 1 || a == 0)return 1;     //注意a为0的情况
if(b == 2)return 1 + a / 2;    //这里优化了一下 = =
if(a < b)return f(a,a);          //这里wa了一次,无语 = =
return f(a,b - 1) + f(a - b,b);    //分两种情况,有空盘和没有空盘的
}
int main()
{
int n,x,y;
scanf("%d",&n);
while(n --){
scanf("%d%d",&x,&y);
printf("%d\n",f(x,y));
}
return 0;
}

没有评论:

发表评论