帮我看看这个JAVA小代码的算法

来源:百度知道 编辑:UC知道 时间:2024/05/22 11:01:08
/*这是一个小游戏:一群人围在一起循环数1,2,3数到3的出局剩下的继续数~
一直到最后一个人就是胜利的人*/
public class Count3Quit
{
public static void main(String[] args)
{
int sum = Integer.parseInt(args[0]);
boolean[] arr = new boolean[sum];
int len = arr.length;
for(int i=0;i<len;i++)
{
arr[i] = true;
}

int leftNum = sum;//初始化剩下来的人数
int index = 1;//每个人带有的编号
int countNum = 0;//正在数的号码

for(index=1;leftNum>1&index<=sum;index++)
{
if(arr[index-1] == true) //为true表示剩下来的~才可以参加数数;数组0为第一个
{
countNum++;
if(countNum == 3)
{
arr[index-1] = false;//数到3的为false
leftNum -- ;
countNum = 0;
}

}
if (index == sum)//数到末尾了继续从头(index =1)开始循环
index = 1;
}
for(index=1;i<=len;index++)
{
if(arr[index-1] == true)
{
System.out.println(index);
}
}

public class Main {

public static void main(String[] args) {
// int sum = Integer.parseInt(args[0]);
int sum=5;
boolean[] arr = new boolean[sum];
int len = arr.length;
for (int i = 0; i < len; i++) {
arr[i] = true;
}

int leftNum = sum;//初始化剩下来的人数
int index = 1;//每个人带有的编号
int countNum = 0;//正在数的号码

for (index = 1; leftNum > 1; index++) {//这里的判断也可以简略
if (arr[index - 1] == true) //为true表示剩下来的~才可以参加数数;数组0为第一个
{
countNum++;
if (countNum == 3) {
arr[index - 1] = false;//数到3的为false
leftNum--;
countNum = 0;
}
}
if (index == sum)//数到末尾了继续从头(index =1)开始循环
{
index = 0 ;//&l