關(guān)于約瑟夫環(huán)的基本知識(shí):
羅馬人攻占了喬塔帕特,41人藏在一個(gè)山洞中躲過(guò)了這場(chǎng)浩劫。這41個(gè)人中,包括歷史學(xué)家josephus和他的一個(gè)朋友。剩余的39個(gè)人為了表示不向羅馬人屈服,決定集體自殺。大家決定了一個(gè)自殺方案,所有這41人圍城一個(gè)圓圈,由第一個(gè)人開(kāi)始順時(shí)針報(bào)數(shù),沒(méi)報(bào)數(shù)為3的人就立刻自殺,然后由下一個(gè)人重新開(kāi)始報(bào)數(shù)仍然是每報(bào)數(shù)為3的人就立刻自殺,......,知道所有人都自殺死亡為止.約瑟夫和他的朋友并不想自殺,于是約瑟夫想到了一個(gè)計(jì)策,他們兩個(gè)同樣參數(shù)到自殺方案中,但是最后卻躲過(guò)了自殺。請(qǐng)問(wèn)是怎么做到的
代碼分享:
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 + "只猴子選大王開(kāi)始-----------------------"); 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)選猴王"); } }
網(wǎng)頁(yè)題目:代碼詳解Java猴子選王問(wèn)題(約瑟夫環(huán))-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://sd-ha.com/article34/pospe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、面包屑導(dǎo)航、用戶體驗(yàn)、App設(shè)計(jì)、App開(kāi)發(fā)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容