李白打酒
作者:互联网
public class 李白打酒 { // ********************李白打酒***************** // 李白壶里有2斗酒,遇到店,壶里的酒量就*2,遇到花就-1;已知遇到5个店,10朵花,最后遇到花 // 求有多少种排列。 static int n = 0; static int[] a = new int[15]; /** * * @param sum 酒的总量 * @param k 还差几次没有遇到花或店 * @param d 店 * @param h 花 */ public static void f(int sum, int k, int d, int h) { if (sum < 0 || k < 0 || sum <= 0 && k > 0) return; if (sum == 0 && k == 0 && d == 5 && h == 10) { n++; System.out.print("n:" + n + " "); for (int i = 0; i < a.length; i++) { System.out.print(a[i]); } System.out.println(); return; } if (k == 0) return; a[a.length - k] = 2;//2代表遇到店 f(sum * 2, k - 1, d + 1, h); a[a.length - k] = 1;//遇到花 f(sum - 1, k - 1, d, h + 1); } public static void main(String[] args) { f(2, 15, 0, 0); } }
标签:遇到,int,打酒,sum,param,static,李白 来源: https://www.cnblogs.com/lang-zi/p/12411388.html