/**
* 有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水,小張手上有十個空汽水瓶,
* 她最多可以換多少瓶汽水喝?”答案是5瓶,
* 方法如下:
* 先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以后4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子,
* 然后你讓老板先借給你一瓶汽水,喝掉這瓶滿的,喝完以后用3個空瓶子換一瓶滿的還給老板,如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?
*/
1 /** 2 * 有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水,小張手上有十個空汽水瓶, 3 * 她最多可以換多少瓶汽水喝?”答案是5瓶, 4 * 方法如下: 5 * 先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以后4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子, 6 * 然后你讓老板先借給你一瓶汽水,喝掉這瓶滿的,喝完以后用3個空瓶子換一瓶滿的還給老板,如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝? 7 */import java.io.IOException; 8 9 import java.util.Scanner; 10 11 public class Main{ 12 public static void main(String[] args) throws IOException { 13 Scanner sc = new Scanner(System.in); 14 while(sc.hasNext()){ 15 int n = sc.nextInt(); 16 if(n>=1 && n<=100){ 17 System.out.println(getNum(n)); 18 }else{ 19 break; 20 } 21 } 22 } 23 24 //遞回求解 25 public static int getNum(int n) { 26 if(n<1 && n>100){ 27 return -1; 28 } 29 if(n == 1){ 30 return 0; 31 } 32 //如果有兩個空瓶子,可以換一瓶水 33 if(n == 2){ 34 return 1; 35 } 36 // n/3得到的是當前n個空瓶子可以直接換取多少瓶水 37 // n%3求的是 當前n個空瓶子換了若干瓶水之后,還剩多少個空瓶子,再加n/3,就是下一輪可以用來換水的空瓶子總數 38 39 return n/3+getNum(n%3 + n/3); 40 } 41 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63653.html
標籤:其他
上一篇:資料結構-排序法
下一篇:0-亂數去重
