By 张旭 CaesarChang 合作 : [email protected]
关注我 带你看更多好的技术知识和面试题
思路结合注释:
首先获取一个总人数 , 然后开一个数组,初始化为1 ,在开一个计数器 suM, 如果sum==3
那么将数组为 0 ,并且更新 剩余人数,只要剩余人数不是1,那就在while循环里面不断循环 ,
最后输出数组中值为1的下标+1就好了 (从0开始的数组)
import java.util.Scanner;
public class Day4_demo1 {
public static void main(String[] args) {
System.out.println("请输入总人数:");
Scanner scanner=new Scanner(System.in);
int totalNum=scanner.nextInt(); //获取总人数
int[] number=new int[totalNum]; //为总人数开辟一个数组
for(int i=0;i<totalNum;i++){ //为数组初始化 全为1
number[i]=1;
}
int remain=totalNum; //记录当前剩余人数
int sum=0; //用来计数 判断是否等于3
while(remain!=1){ //判断是否剩余人数为1
for(int i=0;i<totalNum;i++){ //进行遍历数组
sum=sum+number[i]; //更新计数
if(number[i]==0){ //为0的人不遍历
continue;
}
if(sum==3){ //如果报数为3
number[i]=0; //将此人值设为0
sum=0; //将sum清零
remain--; //剩余的人数更新
}
}
}
for(int i=0;i<totalNum;i++){ //输出不为0的人的(下标+1)
if (number[i]!=0){
System.out.println("队长所在位置为 "+(i+1));
}
}
}
}
复制