问题描述
- 菜鸟求助:Java有n个人,1到3报数,报数为3的人退出,最后留下的人原来的标号是多少
- import java.util.Scanner;
public class Yuesefu{
public static void main(String ags[]){
Scanner gain=new Scanner(System.in);
System.out.println(""请输入总共的人数:"");
int length=gain.nextInt();//从键盘获取数组的长度
boolean a[]=new boolean[length];
//将数组a的初始值设为true
for (int i = 0;i < a.length; i++)
a[i]=true;
for(int j=0;j<=a.length-1;j++){
if(a[j]==true)
if(j%3==0)
a[j]=false;
}
System.out.println(""最后留下的是原来的"");
for(int i=0;i<a.length;i++){
if(a[i]==true)
System.out.print((i+1)+""号);
}
}
}
如何改正,求高手
解决方案
解决方案二:
public class Increase {
public static void rep(boolean[] people) { int i = 0j=0n=people.lengthm=n; while(n>2){ i=++i%m; if (people[i] == true){ j++; if (j==3){ people[i] = false; System.out.println(i); n--;//总人数减1 j = 0;//到3从头数 } } }}public static void main(String[] args) { boolean people[] = new boolean[10]; for(int i = 0; i<10; i++){ people[i] = true; } rep(people);}
}
解决方案三:
开始报数(从1到3报数),凡报到3的人退出圈子
java经典算法_029报到3的人退出圈子
有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
解决方案四:
if (j% 3 == 0)这一行改成j+1试试,你的数组下标是从0开始,及j=0时,j%3==0你这题就这个地方漏了
时间: 2024-08-08 14:36:32