李白打酒

一天,他提着酒壶,从家里出来,酒壶中有酒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);
    }
}

 

 
posted @ 2016-02-19 03:15  wu_overflow  阅读(194)  评论(0编辑  收藏  举报