小朋友们围成一个大圈,然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m

阅读: 评论:0

小朋友们围成一个大圈,然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m

小朋友们围成一个大圈,然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m

package test;/*** @time 2019年12月19日上午9:55:59* @author lll* @describe 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈*           。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,*           继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,*           哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1)*/
public class OutGame2 {/** Param: n是总人数 m是报数的数*/public static int LastRemaining_Solution(int n, int m) {// 固定人数不变int Num = n;// 游标int key = 0;// 结果int result = -1;// 初始化数组代表人是否已经剔除Boolean[] arr = new Boolean[n];for (int i = 0; i < arr.length; i++) {arr[i] = true;}while (n > 1) {for (int i = 0; i < Num; i++) {// 当报数等于m时,报数人下场if (key == m - 1 && arr[i]) {n--;key = 0;arr[i] = false;System.out.println(i);} else {// 否则进入下一个人if (arr[i]) {key++;}}// 当报数大于人总数时循环进行if (i == Num - 1 && i < m && n > 1) {i = -1;}}}// 寻找结果for (int i = 0; i < arr.length; i++) {if (arr[i]) {result = i;break;} else {result = -1;}}return result;}public static void main(String[] args) {// 调用测试System.out.println("jieguo:" + LastRemaining_Solution(0, 0));;}}

 

本文发布于:2024-02-04 14:07:09,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170708922756218.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:围成   小朋友们   小朋友   个数   大圈
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23