COUNT?=?60??#?總?cè)藬?shù)
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計、網(wǎng)站制作與策劃設(shè)計,黃陂網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:黃陂等地區(qū)。黃陂做網(wǎng)站價格咨詢:028-86922220
INDEX_FIRST?=?2???#?第一次站出來的是2號
origin?=?list(range(1,?COUNT+1))
res?=?[]
index_label?=?INDEX_FIRST?-?1
index_temp?=?0
while?origin:
index_temp?=?(index_label?+?index_temp)?%?len(origin)
res.append(origin.pop(index_temp))
index_label?+=?1
print(res)
請點擊輸入圖片描述
#coding=GBK
class Node():
def __init__(self,value,next=None):
self.value = value
self.next = next
def createLink(n):
if n=0:
return False
elif n ==1:
return Node(1)
else:
root = Node(1)
tmp = root
for i in range(2,n+1):
tmp.next = Node(i)
tmp = tmp.next
tmp.next = root
return root
def showLink(root):
tmp = root
while True:
print(tmp.value)
tmp = tmp.next
if tmp ==None or tmp == root :
break
def josephus(n,k):
if k ==1 :
print("幸存者:",n)
return
root = createLink(n)
tmp = root
while True:
for i in range(k-2):
tmp = tmp.next
? ? print("killed:",tmp.next.value)
tmp.next = tmp.next.next
tmp = tmp.next
if tmp.next == tmp:
break
print("survive:",tmp.value)
if __name__ =='__main__':
josephus(10,13)
計算結(jié)果:
killed: 3
killed: 7
killed: 2
killed: 10
killed: 1
killed: 6
killed: 8
killed: 9
killed: 4
survive: 5
現(xiàn)在有13個人圍成一個環(huán),從1開始報數(shù),數(shù)到3的人離開,寫出程序計算最后剩下的是誰。
使用while循環(huán)
使用for循環(huán)
使用遞歸
摒棄遞歸,每次步長不為k時候都把當(dāng)前元素彈出并放到隊列尾部,從而模擬循環(huán)鏈表結(jié)構(gòu)。進(jìn)一步優(yōu)化,由于列表彈出第一個元素的復(fù)雜度較高,可以使用雙端隊列來進(jìn)行優(yōu)化:
30 個人在一條船上,超載,需要 15 人下船。
于是人們排成一隊,排隊的位置即為他們的編號。
報數(shù),從 1 開始,數(shù)到 9 的人下船。
如此循環(huán),直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?
方法一:無算法運算
方法二:算法隊列,利用隊列先進(jìn)先出的原理
queue模塊學(xué)習(xí)
基礎(chǔ)使用函數(shù)
q=queue.Queue(n) #建立長度為n的先進(jìn)先出隊列FIFO
q=q=queue.LifoQueue(n) #建立長度為n的后進(jìn)先出隊列LIFO
q.put() #放入元素
q.get() #取出元素
模塊其他函數(shù)
def josephus(n, m):
if type(n) != type(1) or n = 0:
raise Exception('n must be an integer(n 0)')
if n == 1:
return 0
else:
return (josephus(n - 1, m) + m) % n
if __name__ == '__main__':
print josephus(8, 3)
print josephus(1, 2)
print josephus(0, 2)
本文標(biāo)題:python約瑟夫函數(shù) python解決約瑟夫環(huán)問題編程
網(wǎng)站URL:http://muchs.cn/article6/hjscig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站改版、面包屑導(dǎo)航、商城網(wǎng)站、App開發(fā)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)