Python 報數出圈

2021-10-05 08:42:37 字數 1309 閱讀 1370

編寫程式,模擬報數遊戲。有n個人圍成一圈,順序編號,從第乙個人開始從1到k(假設k=3)報數,報到k的人退出圈子,然後圈子縮小,從下乙個人繼續遊戲,問最後留下的是原來的第幾號。

n=

int(

input

("請輸入總人數:n="))

k=int

(input

("請規定報到數字幾的人退出圈子:k="))

circle=

list

(range(1

,n+1))

print

("遊戲開始前的初始位置"

,circle)

num=1i=

1while

len(circle)!=1

:0))

#把已報數的人取出放到隊尾,以此實現圍成圈迴圈往復

num+=

1if num==k:

del circle[0]

#把報到規定數字的人踢出圈子

num=

1#重新從1開始報數

print

("剩餘的列表是:"

,circle)

i +=

1print

("最後留下的人是原來第{}號的人"

.format

(*circle)

)

def

game

(n, k)

: lst =

list

(range(1

, n+1)

)print

(f"遊戲開始之前的初始位置\n"

) count =

0while

len(lst)

>1:

for i in

range

(k-1):

# k-1次將首部元素放到尾部0)

) del_num = lst.pop(0)

count +=

1print

(f"第次刪掉的是"

)print

(f"剩下的人:"

, lst)

return lst[0]

n =int

(input

("總人數 n = "))

k =int

(input

("刪除報號數 k = "))

result = game(n, k)

print

(f"最後留下的是原來的號"

)

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

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

報數出列問題

已知n個人 以編號1,2,3,n分別表示 排成一列。第一輪從編號為1的人開始依次報數,數到2的倍數的人出列 第二輪從頭開始依次報數,數到3的倍數的人出列 第三輪再次從頭開始依次報數,數到2的倍數的人出列 第四輪從頭開始依次報數,數到3的倍數的人出列 依此規律重複下去,直到佇列中的人數不超過三個為止。...

N圍圈數數出圈

問題描述 有n個人圍城一圈,並從1到n編號,從第m個人開始報數,報到k的人出圈,下乙個人繼續從1開始報數,再報到k的人出圈,直到最後只剩下乙個人。問最後剩下的這個人是幾號。分析 用陣列來儲存每個人的編號,a 0 1,a 1 2,a n 1 n。定義出圈人數為outcircle,每齣圈乙個人,outc...