李白街上走,
提壶去买酒,
遇店加一倍,
见花喝一斗。
遇见5次店,见了10次花,壶中原有2斗酒;
最后刚好喝完酒,要求最后遇见的是花,求可能的情况有多少种?
//用递归
#include <iostream>
using namespace std;
int count=0;
void fun(int flo, int gra, int i){
if(flo==2 && gra==0 && i==2){ //当遇到五次店,九次花之后还剩一斗,则返回上一次
count++;
return;
}
if(flo<0||gra<0||i<0){ //当运行不满足上面的情况,且到了最深层的时候就不能往下走了,遇到店和遇到花不为负
return;
}
fun(flo, gra-1, i*2); //遇到店,酒*2
fun(flo-1, gra, i-1); //遇到花,酒-1
}
int main(int argc, char *argv[]) {
fun(10, 5, 2);
cout << count;
return 0;
}