话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为1,遇花记为0。
代码:
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
int ans;
void dfs(int jiu,int store,int flower,int pre) //遇店记为1,遇花记为0
{
if(store==0 && flower==0 && jiu==0 && pre==0)
{
ans++;
}
if(store>0)
{
dfs(jiu*2,store-1,flower,1);
}
if(flower>0 )
{
dfs(jiu-1,store,flower-1,0);
}
}
int main()
{
ans=0;
dfs(2,5,10,-1); //酒的数量,店的数量,花的数量,遇到的花或店,-1为才开始
cout<<ans<<endl;
}