李白打酒的java题解

话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb就是合理的次序。
像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

public class T2172 {
    
    
    static int count=0;
    public static void main(String[] args) {
    
    
        Order(2,0,0);
        System.out.println(count);
    }

    public static void Order(int wine,int a,int b){
    
    
        if (wine == 0 && a ==5 && b==10){
    
    
            count++;
        }
        if (a > 5 || b>10){
    
    
            return;
        }
        if ((a<5&&wine<=0) || (b<10&&wine<=0)){
    
    
            return;
        }
        Order(wine*2,a+1,b);
        Order(wine-1,a,b+1);
    }
}

考虑到是十五次的判断a还是b,同时还需要对wine进行计算。所以考虑到用递归是比较容易实现的。用递归,最关键的就是递归到最后return的条件,这里总共用了三个if判断句,需要注意。

猜你喜欢

转载自blog.csdn.net/m0_48036171/article/details/114235299