首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 约瑟夫环问题高效解法:列表刪除與索引循環

     編輯:更多程式設計知識

約瑟夫環問題:30 人圍圈,每隔 9 人淘汰 1 人,求前 15 名淘汰者編號。Python 列表動態刪除特性讓實作極為簡潔。

核心邏輯

  1. 建立 1~30 編號列表
  2. 從索引 8 開始(第 9 人)
  3. 刪除該索引元素並輸出
  4. 下一索引 = (當前索引 + 8) % 當前列表長度
  5. 重複 15 次

完整程式碼


a = [x for x in range(1, 31)]
del_index = 8
for i in range(15):
    print(a[del_index])
    del a[del_index]
    del_index = (del_index + 8) % len(a)

關鍵點

  • 列表刪除後自動縮減,索引自動對齊
  • 模運算實現循環索引
  • 時間複雜度 O(n²),但 n=30 完全足夠
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved