解题思路:用一个布尔类型的数组表示,true表示所有人都在里面,然后用双层循环嵌套,外层循环控制只剩下一个人,内层循环用于删除等于3的人。下面的代码有问题,目前我还没有想到解决办法,希望大神可以指点一下
代码:public class Main10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int num = input.nextInt();
boolean[] man = new boolean[num];
for(int i=0;i<man.length;i++){
man[i]=true;//true表示所有人都在数组中
}
int temp=0;
int len=man.length;
while(len>1){
for(int i=0;i<len;i++){
if(man[i]){
temp++;
if(temp==3){
temp=0;//开始新一轮
man[i]=false;//false表示离开数组
len--;//数组的长度减1
}
}
}
}
System.out.println(Arrays.toString(man));
for(int i=0;i<man.length;i++){
if(man[i]){
int temp1=i+1;
System.out.println("最后剩下的那个数是"+temp1);
}
}
}
}