POJ2359(約瑟夫環)

2022-07-18 07:09:12 字數 691 閱讀 2799

解題思路:題目雖然很長,其實就是乙個約瑟夫環問題,對於輸入的字串,從開始依次進行報數,當報到

n=1999時,刪除對應的字元,字串可以看作是首尾相連的環,直到剩餘最後乙個字元。如果剩餘字元為'?',則輸出結果:

yes;如果剩餘字元為' ',則輸出結果:no;否則輸出結果:no comments .

注意:本題只有一組測試資料,如果寫成輸入多組的形式,會超時的。

view code

1 #include 

2 #include 

3 #include 

4using

namespace std;

5const

int n=1999;

6char str[30005];

7int main()

8 16     t=0;

17for(i=2;i<=k;i++)

18        t=(t+n)%i;

19if(str[t]=='

?') cout<

yes"

<20

else

if(str[t]=='

') cout<

<21

else cout<

no comments

"<22

return

0;23 }

poj 2359 約瑟夫環數學問題

無論是用鍊錶實現還是用陣列實現都有乙個共同點 要模擬整個遊戲過程,不僅程式寫起來比較煩,而且時間複雜度高達o nm 當n,m非常大 例如上百 萬,上千萬 的時候,幾乎是沒有辦法在短時間內出結果的。我們注意到原問題僅僅是要求出最後的勝利者的序號,而不是要讀者模擬整個過程。因此如果要追求效 率,就要打破...

poj 2359 Questions 約瑟夫問題

題意 輸入一對字串,按1999取數,判斷最後剩下的數,是 輸出 yes 是 輸出 no 不然輸出 no comments 分析 約瑟夫環問題。view code include include include include using namespace std string s int n 19...

poj 3517 約瑟夫環。。。。。

無論是用鍊錶實現還是用陣列實現都有乙個共同點 要模擬整個遊戲過程,不僅程式寫起來比較煩,而且時間複雜度高達o nm 當n,m非常大 例如上百萬,上千萬 的時候,幾乎是沒有辦法在短時間內出結果的。我們注意到原問題僅僅是要求出最後的勝利者的序號,而不是要讀者模擬整個過程。因此如果要追求效率,就要打破常規...