题解 | #汽水瓶#
汽水瓶
https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f
import java.util.Scanner; import java.util.ArrayList; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { int numi = scanner.nextInt(); if (numi == 0) { break; } list.add(numi); } for (int i = 0; i < list.size(); i++) { System.out.println(getDrinkNum(list.get(i))); } scanner.close(); } static int getDrinkNum(int num) { int subMod = 0; int drinkNum = 0; //能被3整除的部分,商加入喝的数量中 //模3的累计起来 while ((num / 3) != 0) { drinkNum += (num / 3); subMod += num % 3; num /= 3; } //最后如果num小于3了,那么就要也加入余数的集合中 subMod += num; //余数小于等于1,找老板借空瓶子还不起 if (subMod <= 1) { return drinkNum; } else if (subMod <= 3) { //余数等于2或者3,找老板借空瓶子可以再喝一瓶 return drinkNum + 1; } else { //余数还有很多,递归方法再去把余数的和放入方法参数 drinkNum += getDrinkNum(subMod); return drinkNum; } } }