解题思路:
递归实现,具体思路看代码。
参考代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); while (n != 0) { // 递归 System.out.println(drink(n)); n = scanner.nextInt(); } } public static int drink(int n) { // 当空汽水瓶为1或0时,只能换0瓶 if (n == 1 || n == 0) { return 0; } //空汽水瓶为2时,可以换1瓶(这1瓶用来换) if (n == 2) { return 1; } // 递归实现,n/3为直接换的饮料瓶数 // 剩余n % 3个空饮料瓶,将这n/3瓶饮料喝完,又多出n/3个空饮料瓶,递归求解(n / 3 + n % 3)换饮料 return n / 3 + drink(n / 3 + n % 3); } }
0.0分
0 人评分
哥德巴赫曾猜测 (C语言代码)浏览:2560 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:953 |
字符串的输入输出处理 (C语言代码)浏览:1084 |
C语言程序设计教程(第三版)课后习题12.6 (C语言代码)浏览:731 |
多输入输出练习2 (C语言代码)浏览:1709 |
C语言训练-排序问题<1> (C语言代码)浏览:369 |
母牛的故事 (C语言代码)浏览:504 |
C语言程序设计教程(第三版)课后习题8.3 (C++代码)浏览:527 |
简单的a+b (C语言代码)浏览:667 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)简单版浏览:801 |