1元一瓶飲料,兩個空瓶可以換一瓶飲料,三個瓶蓋可以換一瓶飲料,20塊錢可以喝多少瓶飲料?
package test1.test1;
public class Ale {
static int money = 20; // 多少錢
static int per = 1; // 多少錢買一瓶 >0
static int empty = 2; // 多少空瓶換一瓶 >0
static int cap = 3; // 多少瓶蓋換一瓶 >0
static int sum = 0; // 總數
public static void main(String[] args) {
for(int i=1;i<=20;i++) {
money = i;
cal(money/per,0,0);
System.out.println(money+"元錢共可以喝:"+sum+" 瓶");
sum = 0;
}
}
/**
* 計算方法
* @param i 換一輪之後還沒喝的瓶數
* @param j 空瓶數
* @param k 瓶蓋數
*/
public static void cal(int i,int j,int k) {
int i1=0,j1=0,k1=0;
sum += i; // 一開始喝完
j += i;// 喝完後的空瓶數
k += i;// 喝完後的瓶蓋數
if(j >= empty) {// 空瓶可以換
i1 += j/empty;
j1 = j%empty; // 換了之後的空瓶數
}else { // 空瓶不能換
j1 = j;
}
if(k >= cap) {// 瓶蓋可以換
i1 += k/cap;
k1 = k%cap; // 換了之後的瓶蓋數
}else { // 瓶蓋不能換
k1 = k;
}
if(i1 >0 || j1 >= empty || k1 >= cap) {
// 如果可以換則繼續
cal(i1,j1,k1);
}
}
}
運行結果:
1元錢共可以喝:1 瓶
2元錢共可以喝:5 瓶
3元錢共可以喝:11 瓶
4元錢共可以喝:17 瓶
5元錢共可以喝:23 瓶
6元錢共可以喝:29 瓶
7元錢共可以喝:35 瓶
8元錢共可以喝:41 瓶
9元錢共可以喝:47 瓶
10元錢共可以喝:53 瓶
11元錢共可以喝:59 瓶
12元錢共可以喝:65 瓶
13元錢共可以喝:71 瓶
14元錢共可以喝:77 瓶
15元錢共可以喝:83 瓶
16元錢共可以喝:89 瓶
17元錢共可以喝:95 瓶
18元錢共可以喝:101 瓶
19元錢共可以喝:107 瓶
20元錢共可以喝:113 瓶