一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。求可能的方案总数。
我的方法:
size_t num_solutions = 0;
void keepWalking(size_t num_alcohol, size_t num_flowers, size_t num_shops)
{
if (num_flowers == 1 && num_shops == 0 && num_alcohol == 1){
++num_solutions;
}
if (num_flowers != 1){
keepWalking (num_alcohol - 1, num_flowers - 1, num_shops);
}
if (num_shops != 0){
keepWalking (num_alcohol * 2, num_flowers, num_shops - 1);
}
}