最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python數(shù)據(jù)結(jié)構(gòu)隊列解決約瑟夫斯問題

 更新時間:2023年02月03日 14:02:20   作者:西召  
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)隊列解決約瑟夫斯問題

1、隊列

隊列是一種遵循先進先出(FIFO)原則的數(shù)據(jù)結(jié)構(gòu)。

可以使用數(shù)組實現(xiàn)隊列的基本操作。當進行入隊操作的時候,即在隊列尾部插入一個元素,由于需要將所有元素向后移動一個位置,因此添加操作的時間復(fù)雜度是O(n);

當進行出隊操作的時候,只需要在隊頭移除一個元素,其他元素的序號不變,因此移除操作的時間復(fù)雜度是O(1)。

使用Python數(shù)組實現(xiàn)隊列源碼:

class Queue:
    def __init__(self):
        self.items = []
    def is_empty(self):
        return self.items == []
    # 
    def enqueue(self, item):
        self.items.insert(0, item)
    # 
    def dequeue(self):
        return self.items.pop()
    def size(self):
        return len(self.items)

2、使用隊列解決約瑟夫斯問題

弗拉維奧·約瑟夫斯是公元1世紀著名的歷史學家。相傳,約瑟夫斯當年和39個戰(zhàn)友在山洞中對抗羅馬軍隊。眼看著即將失敗,他們決定舍生取義。于是,他們圍成一圈,從某個人開始,按順時針方向殺掉第7人。約瑟夫斯同時也是卓有成就的數(shù)學家。據(jù)說,他立刻找到了自己應(yīng)該站的位置,從而使自己活到了最后。當只剩下他時,約瑟夫斯加入了羅馬軍隊,而不是自 殺。

這個故事有很多版本,有的說是每隔兩個人,有的說最后一個人可以騎馬逃跑。不管如何,問題都是一樣的。

約瑟夫斯問題等價于一個兒童游戲:傳土豆。

在這個游戲中,孩子們圍成一圈,并依次盡可能快地傳遞一個土豆,在某個時刻,大家停止傳遞,此時手里有土豆的孩子就得退出游戲。重復(fù)上述過程,直到只剩下一個孩子。

import my_queue
def hotPotato(namelist, num):
    queue = my_queue.Queue()
    for name in namelist:
        queue.enqueue(name)
    while queue.size() > 1:
        for i in range(num):
            queue.enqueue(queue.dequeue())
        queue.dequeue()
    return queue.dequeue()
print(hotPotato([1, 2, 3, 4, 5, 6], 7))

執(zhí)行過程如下,最終輸出結(jié)果為 3 。

234561
345612
456123
561234
654321
543216
432165
43216 彈出4
3216 彈出3

3、雙端隊列

雙端隊列是一種允許我們同時從隊頭和隊尾進行出隊和入隊操作的特殊隊列,它是隊列和棧的結(jié)合體。

使用數(shù)組實現(xiàn)雙端隊列源碼:

class Deque:
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return self.items == []
    def addFront(self, item):
        self.items.append(item)
    def addRear(self, item):
        self.items.insert(0, item)
    def removeFront(self):
        return self.items.pop()
    def removeRear(self):
        return self.items.pop(0)
    def size(self):
        return len(self.items)

4、使用雙端隊列解決回文問題

回文是指從前往后讀和從后往前讀都一樣的字符串,例如radar、toot,以及madam。

需要構(gòu)建一個程序,它接受一個字符串并且檢測其是否為回文。

import my_deque
def palchecker(aString):
    chardeque = my_deque.Deque()
    for ch in aString:
        chardeque.addRear(ch)
    stillEqual = True
    while chardeque.size() > 1 and stillEqual:
        first = chardeque.removeFront()
        last = chardeque.removeRear()
        if first != last:
            stillEqual = False
    return stillEqual
print(palchecker('aaaabaaaa'))
print(palchecker('aaaabaaab'))

輸出結(jié)果為:

True
False

以上就是Python數(shù)據(jù)結(jié)構(gòu)隊列解決約瑟夫斯問題的詳細內(nèi)容,更多關(guān)于Python數(shù)據(jù)結(jié)構(gòu)隊列的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 實現(xiàn)OpenCV格式和PIL.Image格式互轉(zhuǎn)

    Python 實現(xiàn)OpenCV格式和PIL.Image格式互轉(zhuǎn)

    今天小編就為大家分享一篇Python 實現(xiàn)OpenCV格式和PIL.Image格式互轉(zhuǎn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python數(shù)據(jù)可視化繪制世界人口地圖

    python數(shù)據(jù)可視化繪制世界人口地圖

    這篇文章主要為大家介紹了python數(shù)據(jù)可視化繪制世界人口地圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    相關(guān)系數(shù)矩陣是一種用于衡量變量之間關(guān)系的重要工具,本文將介紹在 Python 中創(chuàng)建相關(guān)系數(shù)矩陣的不同方法,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • 詳解Python和Rust中內(nèi)存管理機制的實現(xiàn)與對比

    詳解Python和Rust中內(nèi)存管理機制的實現(xiàn)與對比

    Python和Rust都采用了垃圾收集(Garbage?Collection)機制來管理內(nèi)存,但它們各自的實現(xiàn)方式有很大的不同,下面就跟隨小編一起來深入了解下二者的區(qū)別吧
    2024-03-03
  • Python實現(xiàn)可視化CSV文件中的數(shù)據(jù)

    Python實現(xiàn)可視化CSV文件中的數(shù)據(jù)

    CSV文件包含許多記錄,數(shù)據(jù)分布在各行和各列中,在這篇文章中,小編主要為大家詳細介紹了Python如何實現(xiàn)可視化CSV文件中的數(shù)據(jù),感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • python爬蟲解決驗證碼的思路及示例

    python爬蟲解決驗證碼的思路及示例

    這篇文章主要介紹了python爬蟲解決驗證碼的思路及示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python Json讀寫操作之JsonPath用法詳解

    Python Json讀寫操作之JsonPath用法詳解

    JSONPath是一種信息抽取類庫,是從JSON文檔中抽取指定信息的工具,提供多種語言實現(xiàn)版本,包括Javascript、Python、PHP和Java,這篇文章主要介紹了Python Json讀寫操作之JsonPath用法詳解,需要的朋友可以參考下
    2023-04-04
  • python打包成so文件過程解析

    python打包成so文件過程解析

    這篇文章主要介紹了python打包成so文件過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • pytorch?膨脹算法實現(xiàn)大眼效果

    pytorch?膨脹算法實現(xiàn)大眼效果

    在PS中,我們可以利用液化工具對人像進行瘦臉、放大眼睛等系列的常規(guī)操作。今天我們來了解一下這些操作的算法原理,并用pytorch?膨脹算法來實現(xiàn)大眼效果,感興趣的可以了解一下
    2021-11-11
  • Python基礎(chǔ)之進程詳解

    Python基礎(chǔ)之進程詳解

    今天帶大家學習Python基礎(chǔ)知識,文中對python進程作了詳細的介紹,對正在學習python基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05

最新評論

湟中县| 若羌县| 额尔古纳市| 榆林市| 黄石市| 五峰| 丁青县| 且末县| 吉木乃县| 屏东县| 称多县| 霞浦县| 大安市| 枣阳市| 三河市| 辽宁省| 合肥市| 丰顺县| 喜德县| 册亨县| 于田县| 屏东市| 莱芜市| 恭城| 白沙| 临邑县| 福鼎市| 兴化市| 罗城| 吉水县| 乌拉特后旗| 东丽区| 榆中县| 大渡口区| 万宁市| 南江县| 葫芦岛市| 文安县| 永和县| 永善县| 呼玛县|