编程分苹果问题_分析解决问题有关总结

编程分苹果问题_分析解决问题有关总结分苹果问题分析及程序*n只奶牛坐在一排,每个奶牛拥有ai个苹果,*现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同*,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,*问最少需要移动多少次可以平分苹果,如果方案不存在输出-1。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 /*

 * n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果

 * 现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同

 * ,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,

 * 问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。

输入描述:

每个输入包含一个测试用例。

每个测试用例的第一行包含一个整数 n(1 <= n <= 100),

接下来的一行包含 n 个整数 ai(1 <= ai <= 100)。

输出描述:

输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1。

示例1

输入

4

7 15 9 5

输出

3

 */ 

//题目来源互联网.

public class FenApple {

public static void main(String[] args) {

//新建输入流对象
Scanner sc = new Scanner(System.in);

//循环输入
while (sc.hasNext()) {

//输入n
int n = sc.nextInt();

//输入n个数字 并赋值给数组
int[] arr = new int[n];
for (int i = 0; i < arr.length; i++) {

arr[i] = sc.nextInt();
}

//如果苹果最终无法被n整除,则无法平分
int sum = 0;
for (int i : arr) {

sum += i;
}
if (sum % n == 0) {

int avg = sum / n;
int index = 0;

//如果可以平分,每次只能换走两个苹果 ,所以如果所有的苹果数在减去平均苹果数后无法被二整除 则同样无法做到分配,

//定义计数器,如果有不能被二整除的情况则自加(也可以使用Boolean类型变量)

int count = 0;
for (int i = 0; i < arr.length; i++) {

if ((arr[i] – avg) % 2 != 0) {

count++;
}
if (arr[i] > avg) {

index += (arr[i] – avg) / 2;
}

}

//判断计数器 并输出
if (count == 0) {

System.out.println(index);
} else {

System.out.println(-1);
}
} else {

System.out.println(-1);
}
}
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182967.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月11日 下午11:46
下一篇 2022年10月11日 下午11:46


相关推荐

  • n8n本地部署和搭建第一个工作流

    n8n本地部署和搭建第一个工作流

    2026年3月15日
    1
  • Win10自动更新怎么永久关闭?有效的Win10强制更新关闭方法

    Win10自动更新怎么永久关闭?有效的Win10强制更新关闭方法之前小编为大家分享过一些Win10彻底关闭WindowsUpdate自动更新的方法,主要是通过一些如设置流量计费或借助一些专门的小工具来实现,但往往会发现,Win10自动更新就像打不死的小强,不管怎么关闭,之后还是会自动更新,让不少小伙伴颇为不爽。今天小编带来了这篇改进型教程,通过全方位设置,彻底关闭Win10自动更新,感兴趣的小伙伴不妨试试吧。…

    2022年6月18日
    36
  • 接口400错误解析

    接口400错误解析   今天我遇上一个让我很痛心的错误400。对程序员来说,这可能是一个最简单的错误码。因为这个相应并没有进拦截器,更没有进到Controller层。可我在解决这个问题时,质询了很多朋友不解,百度各种方案无效。苦苦耗费我大半天时间。        首先,遇到400问题,最大几率是出现了数据类型不一致的问题,简单来说是Controller层不用正确读取你发送请求附带的参数。该例是我前端传送JSON格…

    2022年6月12日
    88
  • NAT( 网络地址转换) 实现

    NAT( 网络地址转换) 实现

    2022年1月2日
    46
  • 控制算法之PID算法 | 从入门到理解到应用 (一发入魂)

    控制算法之PID算法 | 从入门到理解到应用 (一发入魂)目录 一 简介二 二位式控制算法三 位置式 PID 算法 1 P 算法 2 I 算法 3 D 算法四 增量式 PID 算法五 几种增量式 PID 算法的变形一 简介将偏差的比例 Proportion 积分 Integral 和微分 Differential 通过线性组合构成控制量 用这一控制量对被控对象进行控制 这样的控制器称 PID 控制器 二 二位式控制算法三 位置式 PID 算法 1 P 算法 2

    2026年3月17日
    2
  • redis分布式锁的应用场景_redis为什么可以做分布式锁

    redis分布式锁的应用场景_redis为什么可以做分布式锁“分布式锁”是用来解决分布式应用中“并发冲突”的一种常用手段,实现方式一般有基于zookeeper及基于redis二种。具体到业务场景中,我们要考虑二种情况:一、抢不到锁的请求,允许丢弃(即:忽略)比如:一些不是很重要的场景,比如“监控数据持续上报”,某一篇文章的“已读/未读”标识位更新,对于同一个id,如果并发的请求同时到达,只要有一个请求处理成功,就算成功。用活动图表示如下:二、并发请求,不论哪一条都必须要处理的场景(即:不允许丢数据)比如:一个订单,客户正在前台修改地址,.

    2025年10月6日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号