報數3的人退出圈子

2021-08-20 20:52:06 字數 810 閱讀 3390

程式設計題《報數3的人退出圈子》

18.【問題描述】

有n個人圍成一圈,按順序從1到n編號。從第乙個人開始報數,報數3的人退出圈子,下乙個人從1開始重新報數,報數3的人退出圈子。如此迴圈,直到留下最後乙個人。問留下來的人的編號。

【輸入形式】

考慮如下兩種情況:

如果n超出「n must be a natural number less than 10000」,則列印「n is out of range of valid values.」;其中n應該用如上輸入的具體的n數值代替;換行;

如果n是有效範圍的數值,則列印「last no. is:」;然後直接在冒號後面輸出最後留下來的人的編號;換行;

【執行時的輸入輸出樣例1】(下劃線部分表示輸入)

input n(n must be a natural number less than 10000):5

last no. is:4

【執行時的輸入輸出樣例2】(下劃線部分表示輸入)

input n(n must be a natural number less than 10000):100000

100000 is out of range of valid values.

解題思路與易錯分析:

這道題其實就是約瑟夫環的簡化,但是要注意輸入值的合法性

具體的解體思路請移步與:

下面附上我的**:

#include

using namespace std;

int main()

else

cout << "last no. is:"<

3 迴圈陣列實現約瑟夫(報數出圈)問題

package 資料結構 約瑟夫問題 設編號1 2 3.n的n個小孩圍坐一圈,約定編號為k的人從1開始報數,數到m的人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推 直到所有人出列位置,由此產生乙個出隊的編號序列 first指向第乙個結點 一開始的單個結點保持環形的性質 自反 新增乙...

n個人圍一圈,報123,報到三退出圈子,誰留下?

include 標頭檔案 int main 把1到n分別送到group陣列 for i 0 i 當i i 1時,讓i回到第乙個人 if group i 0 如果這個數不為0,m加1 else if m 3 0 用m除以3的餘數來判斷這個人報的是不是3,如果是總數減1,並把這個數置0,也就是退出圈子 ...

Python小遊戲 淘汰報數為3的人

遊戲規則 n人圍成圈,數到三的人淘汰,直到人數小於2,遊戲結束。呈現 n int input 請輸入參加遊戲的人數 list1 for i in range 1 n 1 建立列表 定義move函式將未剔除掉的人移動到人群的末尾 defmove list sep for i in range sep ...