话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒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判断句,需要注意。