报数字游戏
題目:
17個(gè)人圍成一個(gè)圈,編號(hào)為1-17,從第一號(hào)開始報(bào)數(shù),報(bào)到3的倍數(shù)的人離開,一直數(shù)下去直到最后剩下一個(gè)人,此人的編號(hào)是多少,請(qǐng)編程輸出結(jié)果。
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) {// 原來(lái)總?cè)藛TList<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) {// 最后剩下一個(gè)時(shí)結(jié)束if (remainder.size() == 1) {System.out.println("^_^游戲結(jié)束,最后剩下編號(hào)為(" + 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("編號(hào)(" + num + ")的人念到:" + index);remainder.add(num);} else {System.out.println("編號(hào)(" + num + ")的人念到:" + index+ "--->離開 ");obsolete.add(num);}index++;}System.out.println("<============第" + count + "輪結(jié)束\n剩下"+ remainder.size() + "個(gè)人:" + remainder.toString());System.out.println("淘汰" + obsolete.size() + "個(gè)人:"+ obsolete.toString());count++;}}}
總結(jié)
- 上一篇: 在浏览器输入一个网址,按回车之后发生了什
- 下一篇: 寻找数组中最小的k个数(快排和堆排)