代碼詳解Java猴子選王問題(約瑟夫環(huán))
關(guān)于約瑟夫環(huán)的基本知識:
羅馬人攻占了喬塔帕特,41人藏在一個山洞中躲過了這場浩劫。這41個人中,包括歷史學(xué)家josephus和他的一個朋友。剩余的39個人為了表示不向羅馬人屈服,決定集體自殺。大家決定了一個自殺方案,所有這41人圍城一個圓圈,由第一個人開始順時針報(bào)數(shù),沒報(bào)數(shù)為3的人就立刻自殺,然后由下一個人重新開始報(bào)數(shù)仍然是每報(bào)數(shù)為3的人就立刻自殺,......,知道所有人都自殺死亡為止.約瑟夫和他的朋友并不想自殺,于是約瑟夫想到了一個計(jì)策,他們兩個同樣參數(shù)到自殺方案中,但是最后卻躲過了自殺。請問是怎么做到的
代碼分享:
import java.util.HashMap;
import java.util.Map;
public class MonkeyKing {
public static void main(String args[]) {
int n = 100; // 猴子總數(shù)
int m = 3; // 報(bào)數(shù)出局?jǐn)?shù)
@SuppressWarnings("rawtypes")
Map map = new HashMap();
int nn = 1; // 報(bào)數(shù)序號
int mm = 1; // 報(bào)數(shù)號
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) + "只猴子當(dāng)選猴王");
}
}
相關(guān)文章
使用RestTemplate調(diào)用RESTful?API的代碼示例
在開發(fā)?Web?應(yīng)用程序時,調(diào)用?RESTful?API?是一個常見的任務(wù),本文將介紹如何使用?RestTemplate?調(diào)用?RESTful?API,并提供示例代碼,感興趣的同學(xué)可以跟著小編一起來看看2023-06-06
RestTemplate發(fā)送HTTP?GET請求使用方法詳解
這篇文章主要為大家介紹了關(guān)于RestTemplate發(fā)送HTTP?GET請求的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家<BR>33+多多進(jìn)步2022-03-03
mybatis-plus?實(shí)現(xiàn)查詢表名動態(tài)修改的示例代碼
通過MyBatis-Plus實(shí)現(xiàn)表名的動態(tài)替換,根據(jù)配置或入?yún)⑦x擇不同的表,本文主要介紹了mybatis-plus?實(shí)現(xiàn)查詢表名動態(tài)修改的示例代碼,具有一定的參考價值,感興趣的可以了解一下2025-03-03
基于tomcat8 編寫字符編碼Filter過濾器無效問題的解決方法
下面小編就為大家分享一篇基于tomcat8 編寫字符編碼Filter過濾器無效問題的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01

