/* 有17人圍成一圈(編號0-16),從第0號的人開始從1報數, 凡是報到3的倍數的人就主動離開圈子, 然後再數下去(不累計計數,從1計數,直到出圈,重新開始), 直到最後一個人爲止,請問最後留下來的人的原來位置是多少號? */
public class OneArray{ public static void main(String[] args) { int[] person = getLocation(); System.out.println("最後的結果如下:(其中,0表示已經離開圈子了,1表示還在圈中)"); for (int i = 0; i < person.length; i++) { System.out.print(person[i] + " "); // 尋找哪個人的狀態爲1,則此人就是一直沒有出圈的人,獲取此元素的下標,就是此人原來位置的編號 if (person[i] == 1) { System.out.println("這個人的原來位置編號爲:" + i); } } } public static int[] getLocation() { int person[] = new int[17]; // 創建一個由17個人組成的圈子 for (int i = 0; i < person.length; i++) { // 設置每個人都在圈內的狀態爲1 person[i] = 1; } int i = 0; // 表示第幾個人 int k = 0; // 表示報數 int count = 0; // 表示出圈的人數 while (true) { i = i % 17; // 爲了確保i的值永遠在0~16之間 if (person[i] == 1) { // 如果此人還在圈中則報數 k++; // 報數加1 if (k % 3 == 0) { // 如果報的數是3的倍數 person[i] = 0; // 此人的狀態改爲0,表示此人已經離圈 count++; // 離圈的人自動加1 } } if (count == 16) { // 如果已經有16個人離圈,則結束報數 break; } i++; } return person; } }
小題~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.