n個人迴圈報數1 3問題

2021-08-07 21:24:13 字數 646 閱讀 5813

主要的思路見下圖:

我相信只要大家吧自己的思路理清楚了,**實現就簡單了。

以下給出**:

public class test 

public static int  getlastname(int num)

return getlastname(aa);

}static arraylistnewlist;

public static int  getlastname(listnumlist) else

newlist.add(numlist.get(i-2));    //保證順序的 準確性 再新增第乙個和第二個資料

newlist.add(numlist.get(i-1));}}

}return getlastname(newlist);  //遞迴

} else else }}}

看下輸出結果:

當然只是簡單的一種實現方式,僅供參考!

迴圈報數問題

有n個人按照 到n編號圍成乙個圈做遊戲,從第乙個人開始從 報數,數到m的人退出遊戲,他後面的人接著重新從 開始報數 問最後剩下的人是幾號?這個問題被稱為約瑟夫 josephus 環問題。最容易想到的方法是用乙個迴圈鍊錶來模擬遊戲,直到最後只剩下1人 則可得到他的號碼 這種演算法的空間複雜度是 o n...

C語言解決 n個人 123報數問題

題目 有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出 圈子,問最後留下的是原來第幾號的那位。程式設計思路 此遊戲的關鍵問題在於解決 n個人圍成一圈。下一次報數後每個人的位置發生變化。我們可以利用一維陣列儲存每個人的位置。報數時,報到3時,對該元素清零。下一次遇到0元素...

C語言 N個人圍成一圈報數淘汰問題

一 問題描述 有17個人圍成一圈 編號為0 16 從第 0號的人開始從 1報數,凡報到 3的倍數的人離開圈子,然後再數下去,直到最後只剩下乙個人為止。問此人原來的位置是多少號?二 問題解決 1.定義陣列記錄每個編號的狀態 是否被淘汰 2.在未被淘汰的人中檢查是否數到3,若是,淘汰此人 3.繼續此過程...