问题描述:诗仙李太白喜欢喝酒和赏花,在一路上遇到酒店5次,看到花10次,最后一次是看到花,酒也刚好喝完,诗仙遇到店,酒加一倍,看到花喝一斗,诗仙刚出门有2斗酒,请你计算诗仙遇到酒店和花的次序的个数
问题解析:使用递归方法
问题难点:找到临界值
#include<stdio.h>
int sum;
//x表示还有几次遇到店的机会
//y表示还有几次遇到花的机会
//c表示当前酒的斗数
int f(int x,int y,int c)
{
if(x<0||y<0)
return 0;
if(x==0&&y==1&&c==1)//临界条件
sum+=1;
//如果遇到酒店
if(x>0)
f(x-1,y,c*2);
//如果遇到花
if(y>0)
f(x,y-1,c-1);
return 0;
}
int main()
{
f(5,10,2);
printf("%d",sum);
return 0;
}
题目答案:14