黑馬程式設計師——圍圈報數的演算法實現
阿新 • • 發佈:2019-01-25
import java.util.ArrayList; import java.util.List; /* * 有100個人圍成一個圈,從1開始報數,報到14的這個人就要退出。 * 然後其他人重新開始,從1報數,到14退出。問:最後剩下的是100人中的第幾個人? * 分析: * 用集合儲存1-100這100個整數 * 從1開始一直數,直到第14個,把前13個數移除並放到集合末位,當到第14個數時把該數刪除,則 * 第15個數就變成第一個數了,如此一直進行下去,直到集合中只剩下1個數。輸出這個數即可。 */ public class Test9 { public static void main(String[] args) { // 定義集合 List<Integer> list = new ArrayList<Integer>(); // 初始化資料 for (int x = 1; x <= 100; x++) { list.add(x); } // 一直這樣操作,直到集合中只有1個元素 while (list.size() > 1) { // 從1開始一直數,直到第14個,把前13個數移除並放到集合末位,當到第14個數時把該數刪除 // 即把集合的第一個元素移到集合末位,迴圈13次,當第14次時刪除該數。 for (int y = 0; y < 13; y++) { list.add(list.remove(0)); } // 移動13此以後,現在集合的第一個元素就是要刪除的數 list.remove(0); } //此時剩下的數,就是要求的數 System.out.println("最後剩下的是100人中的第"+list.get(0)+"個人。"); } }