幾個人圍圈迴圈報數,計算最後剩下的是哪一位

2021-10-02 00:21:08 字數 671 閱讀 5438

原圖:有

n個人圍成一圈,順序排號。從第乙個人開始報數(從1到

3報數),凡報到

3的人退出圈子,問最後留下的是原來第幾號的那位。

解題思路:假設五個人

1 2 3 4 5  第一次 就是 12312  就只剩下1245 此時再從第一位的時候就是3123 只剩下24 再接著就是12,再31 最後就只剩下4了。

難點就是怎麼把整個讀書迴圈起來,迴圈起來後,讀到3的就剔除,這樣到最後就只會剩下乙個了。

網上有幾種解題思路,有的複雜還不易讀懂,下面這個是我看到的最容易懂的。

def example6(n):

""":param n: 人數

:return: 最後勝出者

"""baoshu=0

num=[i for i in range(1,n+1)] #初始化人 從1開始

while len(num)>1: #長度為1的時候停止,num[0]就是勝出者

baoshu+=1 #計數器

if baoshu==3:

baoshu=0 #讀三次,碰到的數字就是要移除的數字

num.pop() #讀三次的時候,第三個數字被放到了list的最後面,所以直接pop()移除最後乙個

print (num)

總結:靈活使用pop

1334 例2 3 圍圈報數

時間限制 1000 ms 記憶體限制 65536 kb 提交數 5807 通過數 3799 題目描述 有 個人依次圍成一圈,從第 個人開始報數,數到第 個人出列,然後從出列的下乙個人開始報數,數到第 個人又出列,如此反覆到所有的人全部出列為止。設 個人的編號分別為1,2,n,列印出列的順序。輸入 n...

Python小遊戲 圍圈報數淘汰

n個人玩遊戲,從第乙個人開始按照1 2 3報數,報到3的人被淘汰,最終剩下的2人為天選之子 取得勝利!小遊戲 1 先確定玩遊戲的總人數 num n int input 請輸入總人數 2 建立總人數的列表 for i in range n 1 print 輸出列表元素 num 檢查驗證列表元素 3 定...

使用迴圈鍊錶實現約瑟夫環(圍圈報數問題)

剛開始學c,碰到經典的圍圈報數問題,現先將實現 附下 include include struct lnode typedef struct lnode lnode typedef struct lnode linklist struct lnode create int s 建立單項迴圈鍊錶 re...