代碼詳解Java猴子選王問題(約瑟夫環),java猴子

來源:互聯網
上載者:User

代碼詳解Java猴子選王問題(約瑟夫環),java猴子

關於約瑟夫環的基本知識:

羅馬人攻佔了喬塔帕特,41人藏在一個山洞中躲過了這場浩劫。這41個人中,包括曆史學家josephus和他的一個朋友。剩餘的39個人為了表示不向羅馬人屈服,決定集體自殺。大家決定了一個自殺方案,所有這41人圍城一個圓圈,由第一個人開始順時針報數,沒報數為3的人就立刻自殺,然後由下一個人重新開始報數仍然是每報數為3的人就立刻自殺,......,知道所有人都自殺死亡為止.約瑟夫和他的朋友並不想自殺,於是約瑟夫想到了一個計策,他們兩個同樣參數到自殺方案中,但是最後卻躲過了自殺。請問是怎麼做到的

代碼分享:

import java.util.HashMap; import java.util.Map; public class MonkeyKing {   public static void main(String args[]) {     int n = 100; // 猴子總數     int m = 3; // 報數出局數     @SuppressWarnings("rawtypes")     Map map = new HashMap();     int nn = 1; // 報數序號     int mm = 1; // 報數號     System.out.println("-----------------------" + n + "只猴子選大王開始-----------------------");     for (int i = 1; i < n + 1; i++) {       map.put(i, i);     }     while (map.size() > 1) {       if (mm == 3) {         map.remove(nn);       }       nn++;       if (nn == n + 1) {         nn = 1;       }       if (map.get(nn) != null) {         mm++;       }       if (mm == m + 1) {         mm = 1;       }     }     String result = map.values().toString();     System.out.println("第" + result.substring(1, result.length() - 1) + "只猴子當選猴王");   } }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.