有m个苹果,n个小孩。每个小孩都有一个编号,小明的编号是。要尽量公平的分苹果,相邻编号的小孩分到的苹果数目差距不能大于1。
请问如何在满足相邻编号的小孩分到的苹果数目差距不能大于1的情况下,小明分配到的苹果数目最多,并且输出这个最大值,每个小朋友至少需分配到一个苹果。
输入描述
第一行输入三个整数。
输出描述
输出一行,表示小明分配到苹果个数的最大值。
示例 1
4 6 2
输出
2
说明
可以这样分配1 2 2 1。可以小明分配到了2个苹果。
代码如下(舍友给的思路和代码,有一个大佬舍友的感觉真好):
欢迎指正和贡献测试用例,因为平台关了不能验证是不是完全正确,但是感觉思路没有问题。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
System.out.println(maxApplesFork(m,n,k));
}
public static int maxApplesFork(int m, int n, int k) {
//m苹果、n人数、k小明所在位置
if (k > n)
return -1;//小明所在下标大于总人数
int left = k - 1, right = n - k, used = n;
//左边人数、右边人数、