问题描述:有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
  1.每个小朋友都把自己的糖果分一半给左手边的孩子。
  2.一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
  3.反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
  任务:求老师一共需要补发多少个糖果。
*
输入格式
  程序首先读入一个整数N(2<N<100),表示小朋友的人数。
  接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
  要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4

首先分享一下解题思路

1.你需要一个数组来记录每个孩子手中的糖果数量
2.由于孩子们围成一圈,所以数组第一个元素和最后一个元素需要特殊处理
3.需要四个循环
⑴. 为相邻孩子分配糖果
⑵. 判断分配完毕之后糖果数量是否相同
⑶. 分配结束糖果数量不同时老师补发糖果,并记录补发数量
⑷. 继续分配

下面附上鄙人根据自己思路写出的代码

import java.util.Scanner;
public class Allot
{public static void main(String[] args) {Scanner a = new Scanner(System.in);int n = a.nextInt(); //录入孩子个数int ch[] = new int [n]; //创建一个孩子持有糖果数量的数组int count1 = 0; //记录老师补发的糖果数for (int i = 0; i < ch.length; i++) { //录入初始时孩子所持有的糖果数ch[i] = a.nextInt();}while(true) //利用死循环,糖果数量不相同时持续分配下去{//由于使用数组实现,所以第一个孩子和最后一个孩子的数据需要单独处理int m = ch[0]/2; //把第一个孩子所需要分出来的糖果数量记录下来ch[0] /= 2; //然后自身减半for (int i = 1; i < ch.length; i++) {//使用循环使其他孩子分享手中的糖果if(ch[i] % 2 == 0){ch[i] = ch[i]/2; //分一半出去自身糖果数量减半ch[i-1] += ch[i]; //获得右手边孩子分来的糖果}}ch[ch.length-1] += m //最后一个孩子获得第一个孩子分出来的糖果//当有N个孩子时,每一个孩子与其右边的孩子比较糖果数量//最少需要比较N-1次后则可以判断所有人糖果数量相同int count2 = 0; //计数器用于判断所有孩子糖果数量是否一致for (int i = 1; i < ch.length; i++) {if(ch[i] == ch[i-1]) //当糖果数量与左手边孩子糖果数量相同时count2 ++; //计数器加1}if(count2 == n-1) //当n-1次比较都相同时,游戏结束{break;}//孩子们分享完毕之后for (int i = 0; i < ch.length; i++) {if(ch[i] % 2 == 1) //如果手中的糖果数量是奇数{ch[i] += 1; //老师为其补发一个糖果count1 ++; //老师所需要补发的糖果数量加一}}}System.out.println(count1);//打印所记录下的老师补发数量}
}

新手操作,不喜勿喷,有不足之处还望大佬们在评论区多多指点。

java 分糖果游戏 蓝桥杯相关推荐

  1. 分糖果问题--蓝桥杯

    问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数 ...

  2. Java算法学习:蓝桥杯——地宫寻宝(DFS+动态规划—记忆型递归)

    Java算法学习:蓝桥杯--地宫寻宝(DFS✖记忆型递归) 题目: 标题:地宫取宝X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出 ...

  3. 蓝桥杯软件类比赛java,第十届蓝桥杯大赛软件类省赛

    第十届蓝桥杯大赛软件类省赛 这些题官网还没有解答的,我主要参考了b站UP主大雪菜的解法(绝大部分题先自己做了一遍),当然也网上查了一些解答,但发现现在网上的一些解法并不正确,希望可以给大家一个参考. ...

  4. 第五届蓝桥杯校内选拔赛试题java组_第五届蓝桥杯校内选拔赛试题java组

    第五届"蓝桥杯"全国软件和信息技术专业人才大赛 校内选拔赛试题(Java组) 第一部分:准备工作: 1.在D:盘中建立一个以自己"学号+姓名"命名的考生文件夹. ...

  5. Java实现第九届蓝桥杯小朋友崇拜圈

    小朋友崇拜圈 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人 ...

  6. Java实现第十一届蓝桥杯C/C++ 大学 B 组大赛软件类 省赛真题(希望能和各位大佬能一起讨论算法题:讨论群:99979568)

    跑步训练 纪念日 合并检测 REPEAT程序 矩阵 整除序列 解码 走方格 整数拼接 网络分析 试题 A: 跑步训练 本题总分:5 分 [问题描述] 小明要做一个跑步训练. 初始时,小明充满体力,体力 ...

  7. java冰雹数10_蓝桥杯 冰雹数

    蓝桥杯 冰雹数 Java 冰雹数 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过观察发现,这个数字会一 ...

  8. 密码锁 java接口_Java实现 蓝桥杯VIP 算法提高 密码锁

    算法提高 题目 2 密码锁 时间限制:1.0s 内存限制:1.0GB 问题描述 你获得了一个据说是古代玛雅人制作的箱子.你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子 ...

  9. 蓝桥杯国王的烦恼java,国王的烦恼 蓝桥杯

    国王的烦恼 蓝桥杯 题意 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座桥连接.然而,由于海水冲刷,有一些大桥面临着不能使用的危险. ...

最新文章

  1. Rsync命令参数详解
  2. python工程师薪资坑吗-6年Python开发工程师精心总结学习思路,再不看看就凉了...
  3. Linux shell if [ -n ] 正确使用方法
  4. 中科院自动化所:最新视觉-语言预训练综述
  5. sqlserver存储过程循环写法
  6. 南师大计算机语言学,南师大(语言学,文字学,文献学专业备考建议)
  7. 动森11月19日服务器维护,动物森友会11月19日更新内容介绍
  8. 俯瞰大雾弥漫下的鄱阳湖二桥
  9. ip和nmcli命令的的使用方法
  10. 专业能力与行业价值 IBM在华的商业人工智能实践
  11. ISO常见的17大体系介绍
  12. Charles安装SSL证书失败问题
  13. N卡所有旧版本驱动下载
  14. 【每日一题】一起冲击蓝桥杯吧——Day1【蓝桥真题】
  15. 《生物信息学:导论与方法》----序列对比----听课笔记(三)
  16. 售价占激光电视价格一半 抗光幕为何这么贵?
  17. 零基础怎么学习平面设计,学习平面设计需要多久?
  18. python中 jsonchema 与 shema 效率比较
  19. 苹果cmsV10仿优酷模板,最新自适应苹果cms模板
  20. Unknown column 'xxx' in 'field list'

热门文章

  1. 关于机械臂逆运动学 jacobian矩阵
  2. 【题解】【CF1041D】Glider
  3. 人群密度估计--ADCrowdNet: An Attention-injective Deformable Convolutional Network for Crowd Understanding
  4. 踏遍青山人未老,风景这边独好!
  5. 2020年软考准考证打印通知
  6. navicat 远程连接docker mysql提示:Authentication plugin ‘caching_sha2_password‘ cannot be loaded
  7. 步进电机循环脉冲c语言程序,基于C语言的步进电机调速.doc
  8. Java多线程相关知识【17】--设计模式--上下文模式(Context)
  9. 模拟雷神飞机游戏(简易版)
  10. css中调整高度充满_CSS 实现高度自适应铺满整屏的实现