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));
}
}
}
}
複制