POJ 1012 約瑟夫問題

2021-06-22 20:53:09 字數 482 閱讀 5447

我是直接模擬的,因為實在想不到什麼好辦法,不過看到0

俗話說得好,不管黑貓白貓,抓到老鼠的就是好貓。

於是在自家電腦模擬,打個表,就ac了。

至於還有沒有其他方法,有待研究,大家有什麼好方法,請賜教,謝謝!

1、模擬:

方法是,m從2開始判斷,在1,2,3,······,2k中,每次找到第m個數,判斷如果是大於k的,

那麼後面的數就向前移,否則m++,直至找到這樣的m,使得找出的k個數都是大於k,

這個m就是要找的最小的m。(也可以使用鍊錶,不過本人還沒學過鍊錶,所以不在這介紹了,

#includeint main()

for (j=n;j

2、絕對0s演算法:

#includeint main()

; scanf("%d",&k);

while(k)

return 0;

}

題目來自:

POJ 1012 約瑟夫問題

功能function description 約瑟夫環 列舉 poj 1012 開發環境environment dev c 4.9.9.1 技術特點technique 版本version 作者author 可笑痴狂 日期date 20120731 備註notes 大致題意 有k個壞人k個好人坐成一圈...

poj 1012 約瑟夫置換

一開始用的不是約瑟夫置換 關鍵是要儲存之前求出的值。因為只有13個數,所以也可以另開程式手動求出所有k值塞進陣列,這樣每次查詢都是o 1 0ms了 首先m值必須在 k 1 2kn,2k n 1 n 0,1,2 之間,然後 列舉。include include include include incl...

POJ 1012 約瑟夫環

poj的約瑟夫環問題是原本約瑟夫環的一種變形。約瑟夫環 有n個人,從第乙個人開始報數,數到第m個人就退出,依次迴圈,最後剩下的人為勝利者。可以用迴圈鍊錶和陣列的方法做,當m,n比較小時可以一試 迴圈鍊錶,數到就刪除,數到只剩乙個就輸出 陣列,第0個位置數值置為n,其他照常 a 1 1,a 2 2.數...