代碼詳解Java猴子選王問題(約瑟夫環(huán))
關(guān)于約瑟夫環(huán)的基本知識(shí):
羅馬人攻占了喬塔帕特,41人藏在一個(gè)山洞中躲過了這場(chǎng)浩劫。這41個(gè)人中,包括歷史學(xué)家josephus和他的一個(gè)朋友。剩余的39個(gè)人為了表示不向羅馬人屈服,決定集體自殺。大家決定了一個(gè)自殺方案,所有這41人圍城一個(gè)圓圈,由第一個(gè)人開始順時(shí)針報(bào)數(shù),沒報(bào)數(shù)為3的人就立刻自殺,然后由下一個(gè)人重新開始報(bào)數(shù)仍然是每報(bào)數(shù)為3的人就立刻自殺,......,知道所有人都自殺死亡為止.約瑟夫和他的朋友并不想自殺,于是約瑟夫想到了一個(gè)計(jì)策,他們兩個(gè)同樣參數(shù)到自殺方案中,但是最后卻躲過了自殺。請(qǐng)問是怎么做到的
代碼分享:
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ù)序號(hào)
int mm = 1; // 報(bào)數(shù)號(hào)
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)文章
SpringBoot定時(shí)任務(wù)兩種(Spring Schedule 與 Quartz 整合 )實(shí)現(xiàn)方法
本篇文章主要介紹了SpringBoot定時(shí)任務(wù)兩種(Spring Schedule 與 Quartz 整合 )實(shí)現(xiàn)方法,詳細(xì)的介紹了Spring Schedule 與 Quartz 整合的兩種方法,有興趣的可以了解一下。2017-03-03
升級(jí)springboot3之自動(dòng)配置導(dǎo)入失效問題及解決
這篇文章主要介紹了升級(jí)springboot3之自動(dòng)配置導(dǎo)入失效問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot動(dòng)態(tài)更新yml文件
在系統(tǒng)運(yùn)行過程中,可能由于一些配置項(xiàng)的簡(jiǎn)單變動(dòng)需要重新打包啟停項(xiàng)目,這對(duì)于在運(yùn)行中的項(xiàng)目會(huì)造成數(shù)據(jù)丟失,客戶操作無響應(yīng)等情況發(fā)生,針對(duì)這類情況對(duì)開發(fā)框架進(jìn)行升級(jí)提供yml文件實(shí)時(shí)修改更新功能,這篇文章主要介紹了SpringBoot動(dòng)態(tài)更新yml文件2023-01-01
Spring Boot 中常用的注解@RequestParam及基本用法
@RequestParam 是 Spring Framework 和 Spring Boot 中常用的注解之一,用于從請(qǐng)求中獲取參數(shù)值,本文給大家介紹Spring Boot 中常用的注解@RequestParam,感興趣的朋友一起看看吧2023-10-10
struts1登錄示例代碼_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了struts1登錄示例代碼,需要的朋友可以參考下2017-08-08

