大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
问题是:n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1
输出描述:
输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1。
输入例子:
4
7 15 9 5
输出例子:
3
import java.util.Scanner;
/** * 分苹果问题 * @author cc_小白成长 * */
public class TestApple{
public static void main(String[] args) {
//创建输入
Scanner sc = new Scanner(System.in);
//输入整数,
int n = sc.nextInt();
//定义数组,存放输入数据
int [] arr = new int[n];
//用于计算所有数的和
int num = 0;
//循环输入,并计算输入数字的和
for(int i = 0 ;i<n ;i++){
arr[i] = sc.nextInt();
num+=arr[i];
}
//第一次判断 输入的数是否能被整除
if(num%n!=0){
//能被整除才能实现,每人分的苹果一样
System.out.println(-1);
return;
}
//经过前面的判断,这里num/n必定是整数
int avg = num/n;
//num重置 你可以重新定义变量存结果
num = 0;
//循环计算结果
for(int i = 0;i<n;i++){
//这里是用户判断奇偶
/* * 注意 重点1 如果avg是奇数则每人手上都应该是奇数(你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上) */
if(avg%2!=arr[i]%2){
//显然不满足条件
System.out.println(-1);
return;
}
// 用于计算结果
/* 注意 重点2 我们只需要计算avg>arr[i]或者avg<arr[i]即可得到结果 */
if((avg-arr[i])>0){
num += ( avg-arr[i])/2;//除2的目的是每次移动两个苹果
}
}
System.out.println(num);
}
}
测试
例1:
4
15 7 9 5
结果:3
例2:
92
2 76 20 6 20 10 18 34 44 2 14 30 4 84 16 4 20 10 60 10 40 4 4 54 10 40 40 4 30 8 10 4 4 12 28 20 20 40 4 10 12 10 6 6 12 2 18 28 4 32 2 18 8 54 56 10 18 12 20 18 50 24 30 58 42 62 28 16 6 12 22 8 34 8 14 6 78 4 8 28 6 4 20 4 52 2 28 26 38 64 10 16
结果: 354
需要注意两个重点,以及判断不满足条件的情况果断return;
欢迎交流学习
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183875.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...