报数游戏_数组解决方法

Posted gccwelcome

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报数游戏_数组解决方法相关的知识,希望对你有一定的参考价值。


package com.cn;

/**
* 100个人围成一圈,每个人有一个编码,编号从1开始到100.他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,
* 直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少?例如输入M=3时,输出为:“58,91”,输入M=4时,输出为: “34,45, 97”。
* 如果m小于等于1, 则输出“ERROR!”;
* 如果m大于等于100,则输出“ERROR!”;
*/
public class NumGame {
// public static int getSum(int[] arr) {
// int sum = 0;
// for (int i = 0; i < arr.length; i++) {
// if (arr[i] == 0) {
// sum++;
// }
// }
// return sum;
// }
static int sum_0 =100;
public static int[] playame(int m) {
int[] persons = new int[100]; //初始化为0 表示均没有跳出圈子
int index = 1;
//求出没有跳出圈的个数
// while ( getSum(persons>=m)){
while (sum_0>=m) {
for (int i = 0; i < persons.length; i++) {
if (persons[i] == 0) { //在圈内
if (index % m == 0) {
persons[i] = 1;
sum_0 --;
}
index++;
}
}
}
return persons;
}

public static void main(String[] args) {
int[] result = playame(4);
for (int i = 0; i < result.length; i++) {
System.out.print(result[i] + ",");
}
System.out.println();
System.out.println("结果:");
for (int i = 0; i < result.length; i++) {
if(result[i]==0){
System.out.print((i+1)+",");
}
}
}

}

运行的结果:
技术图片

 

 

 


以上是关于报数游戏_数组解决方法的主要内容,如果未能解决你的问题,请参考以下文章

趣味算法--约瑟夫环问题

用Java编程解决韩信点兵的问题?

经典例题|约瑟夫环多方法解决

约瑟夫问题-报数

年前最后一波装逼记一次阿里面试,我是如何用一行代码解决约瑟夫环问题的

约瑟夫问题(Josephus)