报数游戏_数组解决方法


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)+",");
}
}
}

}

运行的结果:

 

 

 


posted @ 2020-04-28 07:36  ~gcc~  阅读(365)  评论(0编辑  收藏  举报