报数字游戏
題目:
17個人圍成一個圈,編號為1-17,從第一號開始報數,報到3的倍數的人離開,一直數下去直到最后剩下一個人,此人的編號是多少,請編程輸出結果。
import java.util.ArrayList; import java.util.Arrays; import java.util.List;/*** * @author agrimony* */ public class AGame {/*** @param args* */public static void main(String[] args) {// 原來總人員List<Integer> peoples = new ArrayList<Integer>();for (int i = 1; i <= 17; i++) {peoples.add(i);}// 每一輪剩余的人員List<Integer> remainder = new ArrayList<Integer>();// 每一輪離開的人員List<Integer> obsolete = new ArrayList<Integer>();int index = 1;int count = 1;while (true) {// 最后剩下一個時結束if (remainder.size() == 1) {System.out.println("^_^游戲結束,最后剩下編號為(" + remainder.get(0)+ ")的人");break;}if (index > 1) {peoples = remainder;remainder = new ArrayList<Integer>();obsolete = new ArrayList<Integer>();}System.out.println("============>第" + count + "輪開始");for (int j = 0; j < peoples.size(); j++) {int num = peoples.get(j);if (index % 3 != 0) {System.out.println("編號(" + num + ")的人念到:" + index);remainder.add(num);} else {System.out.println("編號(" + num + ")的人念到:" + index+ "--->離開 ");obsolete.add(num);}index++;}System.out.println("<============第" + count + "輪結束\n剩下"+ remainder.size() + "個人:" + remainder.toString());System.out.println("淘汰" + obsolete.size() + "個人:"+ obsolete.toString());count++;}}}
總結
- 上一篇: 在浏览器输入一个网址,按回车之后发生了什
- 下一篇: 寻找数组中最小的k个数(快排和堆排)