約瑟夫環(huán):已知n個人(以編號1,2,..n分別表示)圍坐在一張圓桌周圍。
公司主營業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出建昌免費做網(wǎng)站回饋大家。
//輸入一個數(shù)組a,找第M個人的下一個人,輸出下一個人的下標(biāo)。
Java約瑟夫問題: n個人(不同id)圍成一個圈,從startId(任意數(shù))個開始報數(shù)m(任意數(shù))個數(shù),數(shù)m的人出列排成新隊列,m清零,然后又從下一個人開始數(shù)m個數(shù)開始,數(shù)到m就出列接在新隊列尾部,如此重復(fù),知道所有人都出列為止。
你的remove方法不對,你的方法每次刪掉的是從head開始第m個位置的節(jié)點,但約瑟夫環(huán)需要的是要刪掉每次循環(huán)數(shù)到m的位置的節(jié)點。remove方法可以去掉,再把out方法改一下就可以了。
用面向過程的編程方式(C),對某個給定的n=8與m=3,給出被淘汰出列的旅客編號,以及最終的幸存者。 用面向?qū)ο蟮木幊田L(fēng)格(C++),重新處理該約瑟夫問題。 談?wù)勥@兩種編程風(fēng)格的優(yōu)點。
Java語言提供了專門機制以解決這種沖突,有效避免了同一個數(shù)據(jù)對象被多個線程同時訪問。
如果沒有面向?qū)ο蟮某绦蛟O(shè)計系統(tǒng)的堅實基礎(chǔ),就無法實現(xiàn)像Java這樣的面向?qū)ο缶幊陶Z言的美妙之處。如果你不能理解面向?qū)ο蟮某绦蛟O(shè)計系統(tǒng)的獨到之處即使你使用面向?qū)ο蟮恼Z言,你也可能知識用一種走流程的方法在編寫代碼。
Java通過面向?qū)ο蟮姆椒ㄟM行異常處理,把各種不同的異常進行分類,并提供了良好的接口。這種機制為復(fù)雜程序提供了強有力的控制方式。同時這些異常代碼與“常規(guī)”代碼分離,增強了程序的可讀性,編寫程序時也顯得更靈活。
但是,這種錯誤處理機制會導(dǎo)致不少問題。 Java通過面向?qū)ο蟮姆椒▉硖幚砝?。在一個方法的運行過程中,如果發(fā)生了例外,則這個方法生成代表該例外的一個對象,并把它交給運行時系統(tǒng),運行時系統(tǒng)尋找相應(yīng)的代碼來處理這一例外。
1、約瑟夫環(huán):已知n個人(以編號1,2,..n分別表示)圍坐在一張圓桌周圍。
2、你好像把自己繞進去了,邊界值處理上有些問題,建議不在原來基礎(chǔ)上改了。
3、編程題目不要發(fā)帖子,因為很少有人來寫。不過你可以把你寫的程序貼出來,讓大家修改,大家還是樂意的。
4、你的remove方法不對,你的方法每次刪掉的是從head開始第m個位置的節(jié)點,但約瑟夫環(huán)需要的是要刪掉每次循環(huán)數(shù)到m的位置的節(jié)點。remove方法可以去掉,再把out方法改一下就可以了。
5、方法屬性什么的都不清楚,只能猜了,也不知道對不對。
6、報的是空指針異常。你得類名不規(guī)范哦,得用大寫哈。當(dāng)然這個不是錯誤的關(guān)鍵。問題出在你得數(shù)組num[]只是聲明了,沒有實例化,所以空指針異常了。