1. 程式人生 > >每日演算法練習之李白喝酒問題

每日演算法練習之李白喝酒問題

李白打酒  
話說大詩人李白,一生好飲。幸好他從不開車。 
  一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱:
  無事街上走,提壺去打酒。     
  逢店加一倍,遇花喝一斗。 
  這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。  

  請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則:babaabbabbabbbb 就是合理的次序。像這樣的答案一共有多少呢?請你計算出所有可能方案的個數(包含題目給出的)。

package myjava;
/**
 * @author wang:
 * @version 建立時間:2016年8月23日 上午8:16:22
 * 類說明
 * 李白打酒  
話說大詩人李白,一生好飲。幸好他從不開車。 
  一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱:
  無事街上走,提壺去打酒。     
  逢店加一倍,遇花喝一斗。 
  這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。  
  請你計算李白遇到店和花的次序,可以把遇店記為a,遇花記為b。則:babaabbabbabbbb 
  就是合理的次序。像這樣的答案一共有多少呢?請你計算出所有可能方案的個數(包含題目給出的)。
 * 
 */
public class Libai {
	public static int jishu;
	public static void main(String[] args) {
		drink(2,5,10);
		System.out.println(jishu);
	}
	public static void drink(int dou,int a,int b){
		if(dou<1||a<0||b<1){
			return;
		}
		if(dou == 1&&a==0&&b==1){
			jishu++;
		}
		if(dou>0){
			if(a>0){
				drink(dou*2,a-1,b); 
			}
			if(b>0){
				drink(dou-1,a,b-1);
			}
		}
			
	}

}