题目大意
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:答案是个整数。不要书写任何多余的内容。
题目思路:一开始自己想的是DFS自己也不会写
只能去借鉴别的大神了
后来我发现自己想的难了
这应该算是 遍历树的所有结构 没有进行剪枝啥的(纯属自己的理解)
下面给代码
#include<iostream>//1009
using namespace std;
int sum=0;//为了计数
int fun(int m,int n,int c)//m是花店的个数 n遇到花的个数 c为初始酒量
{
if(m>0)
fun(m-1,n,c*2);
if(n>0)
fun(m,n-1,c-1);
if(m==0&&n==1&&c==1)
sum++;//只有满足最后一家是 花时 并且酒量 最后为 1
return sum;
}
int main()
{
int cnt=fun(5,10,2);
cout<<cnt;
return 0;
}