選隊長游戲
任務概述
今天同學們相約一起爬山游玩,為了更好的進行這場活動,大家準備推舉
一個人作為出游的臨時隊長,為了體現合理公平,大家提出了一個比較有趣的規則,所有人圍成一圈,順序排號,從第一個人開始報數(從 1 到 3 報數),凡報到 3 的人退出圈子,剩下的人繼續報數,最后留下的當選為隊長,請你通過撰寫程式,求出一組人中的隊長是原來第幾位同學,
解決思路 詳見代碼注釋
public class Task2_5_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("請輸入相約游玩的同學人數:");
//記錄報數的總人數
int total = input.nextInt();
boolean[] isLeaving = new boolean[total];
for(int i=0;i<isLeaving.length;i++) {
//初始時,所有人都不離開,都在圈內玩游戲
isLeaving[i] = false;
}
//記錄剩下繼續報數的人
int leftPeople = total;
//記錄報數報到哪兒
int i = 0;
//k為下標,即標記哪個人
int k = 0;
while(leftPeople > 1) {
//還剩人數只要>1 就繼續報數
if(!isLeaving[k]) {
//如果這個人還沒被踢出圈子
//報數+1
i++;
if(i == 3) {
//報到3了,則重新報數
i = 0;
//該人退出圈子
isLeaving[k] = true;
//更新剩下人數
leftPeople--;
}
}
//對人做標記 不管在不在圈子 都要對k自增
k++;
//一圈報數報完了
if(k == total) {
k = 0;
}
}
for(int j=0;j<isLeaving.length;j++) {
if(!isLeaving[j]) {
System.out.println("隊長為原來組中的第"+(j+1)+"個同學,");
}
}
input.close();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290363.html
標籤:其他
上一篇:圖形繪制——pygame之旅
