public class TestOne {
private static int n=0;//合理的次序总数
/*题目:有酒2斗,遇店加1倍,遇花喝一斗
* 共遇店5次,遇花10次,最后一次遇到的是花,正好喝完
*思路:深度搜索
* */
public static void main(String[] args) {
dfs(5,9,2); //排除最后一次遇花,共遇店5次,遇花9次,初始有2斗酒
System.out.println("共有"+n+"个合理的次序");
}
/*dian:当前未遇店的次数
*hua:当前未遇花的次数(排除最后一次遇花)
*jiu:当前的剩余的酒(最后还剩1斗)
* */
private static void dfs(int dian, int hua, int jiu) {
if(dian==0 && hua==0 && jiu==1) {//以遇完所有的店和花,并且还有1斗酒
n++;
return;
}
if(dian>0) {//遇店
dfs(dian-1,hua,jiu*2);
}
if(hua>0) {//遇花
dfs(dian,hua-1,jiu-1);
}
}
}