Test_Java_集合練習(約瑟夫環/幸運數字)

需求:使用Java程序求解約瑟夫環的問題

約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號爲k的人開始報數,數到m的那個人出列被殺死;他的下一個人又從1開始報數,數到m的那個人又出列被殺死;依此規律重複下去,直到圓桌周圍的人全部出列被殺死,只剩最後一個人爲止,此時遊戲結束,此人爲贏家,也稱該數字爲幸運數字。

這裏寫圖片描述

import java.util.ArrayList;

public class Test7 {
    /*
     * 約瑟夫環(幸運數字)
     */
    public static void main(String[] args) {
        System.out.println(getLucklyNum(8));    //參數代表參與遊戲人的個數
    }

    /*
     * 獲取幸運數字
     * 1.返回值類型int
     * 2.參數列表int num
     */
    public static int getLucklyNum(int num){
        ArrayList<Integer> list = new ArrayList<>();    //創建集合存儲i到num的對象
        for (int i = 1; i <= num; i++) {
            list.add(i);            //將i到num存儲在集合中
        }
        int count = 1;      //用來數數的,只要是3的倍數就殺人
        for(int i=0; list.size()!=1; i++){      //只要集合中人數超過1,就要不斷地殺人
            if(i == list.size()){           //如果i增長到集合最大的索引+1時
                i = 0;                      //重新歸0
            }
            if(count % 3 ==0){              //如果是3的倍數
                list.remove(i--);               //就殺人       
            }
            count++;
        }
        return list.get(0);
    }
}
發佈了140 篇原創文章 · 獲贊 15 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章