每日演算法練習之李白喝酒問題
阿新 • • 發佈:2019-02-05
李白打酒
話說大詩人李白,一生好飲。幸好他從不開車。
一天,他提著酒壺,從家裡出來,酒壺中有酒2鬥。他邊走邊唱:
無事街上走,提壺去打酒。
逢店加一倍,遇花喝一斗。
這一路上,他一共遇到店5次,遇到花10次,已知最後一次遇到的是花,他正好把酒喝光了。
話說大詩人李白,一生好飲。幸好他從不開車。
一天,他提著酒壺,從家裡出來,酒壺中有酒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); } } } }