题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); int apple = Integer.parseInt(input.split(" ")[0]); int plate = Integer.parseInt(input.split(" ")[1]); System.out.println(getCount(apple, plate)); } public static int getCount(int apple, int plate){ // 递归出口: // 没苹果放了,之后所有的盘子都空着,这种情况也是一种放法,且只能这么放; // 或者盘子只有一个了,但是苹果不为0,只能将所有苹果放在这个盘子里 if(apple == 0 || plate == 1){ return 1; } // 若盘子数量大于苹果数量,则忽略多余的盘子,因为盘子是无差别的 if(plate > apple){ return getCount(apple, apple); } else { // 若盘子数小于等于苹果数,此时可以分为两各种情况 // 1. 盘子不放满,将一些盘子空着,则从空一个盘子开始放 // 2. 盘子放满,则先将每个盘子放一个苹果,再放剩下的苹果 return getCount(apple, plate - 1) + getCount(apple - plate, plate); } } }