李白打酒(dfs递归)
作者:互联网
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
答案为 :14
1 public class 李白打酒 { 2 static int res; 3 public static void main(String[] args) { 4 dfs(5,9,2); //花为9不为10 是因为这里不考虑最后一次为花的情况 不然还要讨论最后一次是什么 5 System.out.println(res); 6 } 7 static void dfs(int dian,int hua,int jiu){ //三个参数对应 店,花和酒的数目 8 if(jiu==1 && dian==0 && hua==0){ //这里酒为1不为0是因为不考虑最后一次遇到花 9 res++; 10 } 11 if(dian>0) dfs(dian-1,hua,jiu*2); 12 if(hua>0) dfs(dian,hua-1,jiu-1); 13 } 14 }
标签:dian,hua,递归,int,打酒,dfs,jiu,李白 来源: https://www.cnblogs.com/w12312/p/14544037.html