原圖:有
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...