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

输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 100)。

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

输入例子:
4
7 15 9 5
输出例子:

3

题目分析思路如下:

第一步,确定问题使用的数据结构。根据题干描述和输入例子完全符合数组结构特点;

第二步,罗列出方案不存在的情况;

①总苹果数不能被n只奶牛均分;

②总苹果数能被n只奶牛均分,设均值为ave。由于每次只能转移2个苹果,当奶牛的苹果数ai与均值ave的差为奇数时;

第三步,方案存在的情况求解移动次数。对于苹果数大于均值ave的ai,求其与ave的差整除2的商,最后将所有满足条件的商累加即为移动次数。

思路清晰后,代码水到渠成,贴出博主的C++代码:

#include<iostream>
using namespace std;
int DistributeApples(int arr[],int length);
int DistributeApples(int arr[],int length)
{if(arr==NULL||length<=0)//检查输入参数合法性return -1;//求总苹果数及均值int SumOfApple=0;for(int i=0;i<length;i++){SumOfApple+=arr[i];}if(SumOfApple%length!=0)//不能均分情况return -1;int Average=SumOfApple/length;//求苹果移动次数int SumOfMove=0;for(int j=0;j<length;j++){int Difference= Average>arr[j]?Average-arr[j]:arr[j]-Average;if(Difference%2!=0)//差为奇数情况return -1;if(arr[j]>Average)SumOfMove+=Difference/2;}return SumOfMove;
}

网易校招编程题目之牛牛分苹果相关推荐

  1. 从网易校招编程题谈起,轻松理解有趣的0-1背包问题

    从网易的一道算法题开始 最近在准备春招实习,偶然做到网易的一道编程题,一方面找了很多博客看的云里雾里,这里特别写下解题的思路和逻辑,一方面加深印象,另一方面供需要的你学习参考.好了,话不多说,开始吧. ...

  2. 2016京东编程题:小东分苹果

    小东分苹果 题目描述 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔 ...

  3. 分苹果 A,B两个人把苹果分为两堆,A希望按照它的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算走位,12+5=9(1100+0101=9)

    前言 <华为机试真题>专栏为华为OD机试真题,源码包含多种语言. 如果找不到想要的考题 ,或者需要最新考题的答案,请进行留言机试题目,[注:留言考题请注明机试的时间] 题目描述 [分苹果] ...

  4. python分苹果问题_蓝桥杯--算法提高--VIP--分苹果题目(差分数组)

    1. 问题描述: 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1..N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果. 最后老师想知道每个小朋 ...

  5. 基础编程题目集(15 分题)

    基础编程题目集(15 分题) 7-1 厘米换算英尺英寸 (15 分) 如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048.现在,如果用户输入的是 ...

  6. 牛客网-精华专题-前端校招面试题目合集

    前端校招面试题目合集 501 HTML CSS 前端基础 HTML 浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层(structural layer).表示层(presentation ...

  7. 【面试】网易游戏面试题目整理及答案(5)

    网易游戏面试题目整理及答案(5) 算法 操作系统 Linux部分 其他 参考资料 算法 Leetcode 75题:请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 1)每一行 ...

  8. 【面试】网易游戏面试题目整理及答案(1)

    网易游戏面试题目整理及题目(1) Python部分 计算机网络 参考资料 Python部分 迭代器生成器,生成器是如何实现迭代的? 答:迭代器iterator:迭代器就是实现了迭代方式的容器,iter ...

  9. /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第十次落地时,共经过多少米?第十次反弹多高? */

    题目: /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第十次落地时,共经过多少米?第十次反弹多高? */ 我是用java做的 public ...

最新文章

  1. Blender和Substance Painter复古相机创作学习教程
  2. Creating Apps With Material Design —— Defining Custom Animations
  3. html5与原生混合模式开发,HTML5与混合模式开发与Native的关系及其实现[张振华.Jack].pdf...
  4. c++ege为什么直线画不出来_今天让我们来练习画一款椭圆茶几
  5. mysql中vlookup函数_wps表中vlookup函数使用方法将一表引到另一表
  6. 6.exit _exit _Exit
  7. 上海计算机应用基础自考上机,上海2010年自考计算机应用基础上机大纲
  8. css为什么要清除浮动
  9. 【Linux系统编程】Linux 信号列表
  10. 梯度迭代树回归(GBDT)算法介绍及Spark MLlib调用实例(Scala/Java/python)
  11. 图的遍历(Java)构造器
  12. 求合体电脑版_网红界宋祖儿找年轻版言承旭当男友,一张合照收割大量cp粉?!...
  13. python制作印刷体数据集:数字符号数据集(字符串转图片)
  14. 九宫格锁屏和设置密码(九点密码盘)
  15. 香橙派 OrangPi PC 安装Lakka游戏系统及使用指南
  16. 从iRedMail 创建web服务学习Nginx
  17. 计算机键盘最小化,电脑最小化键盘怎么按
  18. 火山pc实现找图找色模块
  19. 小程序成四大行业商家标配,小程序代理市场如何
  20. win10台式计算机调亮度,Win10系统台式机怎么调节亮度

热门文章

  1. 6款炫酷的HTML5 3D特效源码
  2. linux设置sfq队列参数,Linux系统运维之Linux高级流量控制工具TC使用方法
  3. WebDAV是什么,有哪些支持webdav的网盘和工具?
  4. 用计算机写作文主题,用计算机写作文教学设计.doc
  5. android免root读写u盘最新方法,支持安卓Q+
  6. 【输入法】不显示中文
  7. java webshell_都0202年了老嗨还在用的 - 各种姿势jsp webshell
  8. word 对文中的图表进行链接、插入题注。
  9. 盘点程序员可以在上面捡钱的共享经济产品
  10. 牛逼的黑客也得找工作,他们靠的是黑掉公司网站?