国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

約瑟夫問(wèn)題

2019-11-11 00:14:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

網(wǎng)上找的約瑟夫問(wèn)題的代碼,自己理解了一遍,多加了一些注釋。方便以后復(fù)習(xí)

據(jù)說(shuō)著名猶太歷史學(xué)家 Josephus有過(guò)以下的故事:在羅馬人占領(lǐng)喬塔帕特后,39 個(gè)猶太人與Josephus及他的朋友躲到一個(gè)洞中,39個(gè)猶太人決定寧愿死也不要被敵人抓到,于是決定了一個(gè)自殺方式,41個(gè)人排成一個(gè)圓圈,由第1個(gè)人開(kāi)始報(bào)數(shù),每報(bào)數(shù)到第3人該人就必須自殺,然后再由下一個(gè)重新報(bào)數(shù),直到所有人都自殺身亡為止。然而Josephus 和他的朋友并不想遵從。

首先從一個(gè)人開(kāi)始,越過(guò)k-2個(gè)人(因?yàn)榈谝粋€(gè)人已經(jīng)被越過(guò)),并殺掉第k個(gè)人。接著,再越過(guò)k-1個(gè)人,并殺掉第k個(gè)人。這個(gè)過(guò)程沿著圓圈一直進(jìn)行,直到最終只剩下一個(gè)人留下,這個(gè)人就可以繼續(xù)活著。問(wèn)題是,給定了和,一開(kāi)始要站在什么地方才能避免被處決?Josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個(gè)與第31個(gè)位置,于是逃過(guò)了這場(chǎng)死亡游戲

	/**	 * 實(shí)現(xiàn)約瑟夫問(wèn)題的方法	 * @param sum 總?cè)藬?shù)	 * @param n 報(bào)數(shù)報(bào)到n的人自殺	 */	public static void get(int sum, int n) {				//將人數(shù)放到List集合中方便刪除指定元素,指定元素就表示被殺死的人		List<Integer> strs= new ArrayList<Integer>();		for (int i = 0; i < sum; i++) {			strs.add(i + 1);		}				int i=0; //下標(biāo)	    while (strs.size() > 1) {	    		    	/*	    	 * 數(shù)到n的數(shù)字移出去。當(dāng)一個(gè)人數(shù)到n,就將他的下標(biāo)設(shè)置成0,并刪除它	    	 * 這樣他的下一個(gè)數(shù)就會(huì)自動(dòng)往前移動(dòng),下標(biāo)變?yōu)?	    	 */	    	if(n==i+1){	    		i=0;//重新開(kāi)始數(shù)	            System.out.PRintln("每次死去的人:"+strs.remove(i));	        }	    		    	//把第一個(gè)移動(dòng)到最后一個(gè),就相當(dāng)于跳過(guò)了一個(gè)人。如果沒(méi)有執(zhí)行if語(yǔ)句,就相當(dāng)于把跳過(guò)的第二個(gè)人移到了最后	        strs.add(strs.remove(0));	        i++; //跳過(guò)第二個(gè)人	        	    }	    System.out.println("最后活著的人:"+strs.remove(0));//輸出最后一個(gè)數(shù)字	}}

注意:

List每remove掉一個(gè)元素以后,后面的元素都會(huì)自動(dòng)向前移動(dòng)。

remove方法會(huì)返回被刪除的元素。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 白沙| 团风县| 封开县| 仙游县| 永修县| 福建省| 库尔勒市| 尼木县| 宜都市| 邵东县| 日喀则市| 婺源县| 河津市| 江门市| 济宁市| 张家港市| 长寿区| 滨州市| 镇赉县| 奉新县| 泽州县| 苍梧县| 乌恰县| 上栗县| 贵州省| 姜堰市| 黄石市| 青神县| 鄱阳县| 锦州市| 新余市| 晋州市| 永靖县| 璧山县| 德兴市| 府谷县| 大冶市| 北流市| 沅江市| 织金县| 开平市|