题解 | #放苹果#
放苹果
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);
}
}
}
查看23道真题和解析