题目:
一个中学生(首师大附中在线测评系统的系统管理员)过生日了,他邀请了许多人来参加她的生日聚会,生日聚会中最重要的一件事情就是吃蛋糕了。一个中学生共邀请了n个人,这些人的心里都想好了自己要多少克蛋糕。如果给他少了,他就会郁闷(没有吃到足够多的蛋糕)。如果给他多了,他也会郁闷(因为他不能浪费,需要把这些蛋糕都吃了,撑着了会不舒服)。一个人的郁闷指数为他想要的蛋糕克数与他实际得到的蛋糕克数之差(记住:一定是大数减小数)。一个中学生想指定一个人想要的蛋糕克数作为标准,给每个人都是这么多蛋糕。聚会是件高兴的事情,同学们郁闷指数之和越小越好,现在他需要知道同学们的郁闷指数最低值是多少,请你编写程序帮他实现。
输入:第一行为正整数n,表示参加聚会总共有n位同学。第二行为n个正整数,表示每个人想要得到的蛋糕克数(<=1000)。
输出:输出所有人的郁闷指数之和的最小值
输入事例:
5
100 300 200 100 300
输出事例:
400
求大神帮忙,thanks!
吃个蛋糕都这么矫情~~~ 这是一个求极值的问题(废话),求出了每人获得标准蛋糕克数,也就可以知道郁闷指数之和。
设每个同学想要的蛋糕克数为ai(0< i <=n),实际得到蛋糕克数m,郁闷指数为k,则k=|ai-m|。那么,郁闷指数之和:
代码你自己也动手写一遍吧!
——————————————————————————————————
又来看了一遍题,感觉自己漏掉了两个条件,补充一下:
1. 题中说“想指定一个人想要的蛋糕克数作为标准”,那是不是从输入的参数中选一个数值来作为标准值呢?
如果是这样的话,需要把arr数组排序,在求得m值(也就是sum/n)之后,从数组中找出最接近的一个,然后通过Math.abs函数计算出“郁闷指数”并求和。
2. 输入数据需要做个有效检查,不能大于1000么。
不明觉厉,哈哈😄