yanciel


私信TA

用户名:dotcpp0709145

访问量:1667

签 名:

等  级
排  名 16383
经  验 805
参赛次数 0
文章发表 6
年  龄 0
在职情况 教师
学  校 郑州工业应用技术学院
专  业

  自我简介:

解题思路:
递归实现,具体思路看代码。

参考代码:

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 人评分

  评论区

  • «
  • »