成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

使用python從三個角度解決josephus問題的方法

瀏覽:153日期:2022-08-01 08:37:11

0 寫在前面

josephus問題是數(shù)據(jù)結(jié)構(gòu)教材中的一個常見實例,其問題可以描述為:

設(shè)nnn個人圍坐一圈,現(xiàn)在要求從第kkk個人開始報數(shù),報到第mmm個的人退出。然后從下一個人開始繼續(xù)按照同樣規(guī)則報數(shù)并退出,直到所有人退出為止。要求按照順序輸出每個人的序列號。

1 基于數(shù)組概念的解法

首先考慮基于python的list和固定大小的數(shù)組概念,即將list看作元素個數(shù)固定的對象,只改變值而不刪除元素,相當(dāng)于擺了一圈nnn把椅子,人雖然退出但是椅子還在,我們可以給每個人從111到nnn編號,沒有人的位置用000表示,思路如下:

初始

建立包含nnn個人(編號)的list 找到第kkk個人開始

運行

從kkk的位置開始數(shù)到mmm,中間遇到000的就跳過 數(shù)到mmm之后,將其值改為000 然后繼續(xù)循環(huán),總共循環(huán)nnn次(因為每次循環(huán)就會退出一個人)

代碼如下:

def josephus_A(n, k, m): people = list(range(1, (n+1))) i = k-1 for num in range(n): count = 0 while count < m: if people[i] > 0:count += 1 if count == m:print(people[i], end=' ')people[i] = 0 i = (i+1) % n # count只是flag,真正記的數(shù)是i if num < n-1: print(end=',', ) else: print(' ')

2 基于順序表的解法

順序表是線性表的一種,即表中元素放在一塊足夠大的連續(xù)存儲區(qū)里,首元素存入存儲區(qū)開始位置,其余元素依次存放。順序表在python中的也是list,跟第一種解法不同,當(dāng)?shù)趍mm個人退出需要進行刪除元素的操作,才是順序表。而第一種解法的數(shù)組想要刪除并不是那么容易,這里是因為python中沒有內(nèi)置對數(shù)組的支持,所以用list代替,具體可以參照c++中的數(shù)組,如果要刪除中間的某個元素的話,必須對后面的元素重新編號。代碼實現(xiàn)如下:

def josephus_L(n, k, m): people = list(range(1, (n+1))) i=k-1 for num in range(n,0,-1): i=(i+m-1)%num print(people.pop(i),end=', ' if num>1 else 'n')

3 基于循環(huán)單鏈表的解法

單鏈表即單向鏈接表,典型的就是c++中的鏈表,循環(huán)單鏈表就是頭尾相連的單鏈表,也是線性表的一種,這道題目使用循環(huán)單鏈表記錄nnn個人圍坐一圈最為契合。我們只需要數(shù)到第mmm個結(jié)點就刪除,刪除操作對于鏈表來說比較容易,而且不需要有i = (i+1) % n這樣的整除操作。但是問題在于python并沒有像c++那樣有內(nèi)置對鏈表的支持,因此需要建立一個鏈表的類,建立是比較麻煩的,但是操作比較簡單,如下:

class LNode: # 建立鏈表結(jié)點 def __init__(self,elem,next_=None): self.elem=elem self.next=next_class LCList: # 建立循環(huán)鏈接表 def __init__(self): self._rear=None def is_empty(self): return self._rear is None def prepend(self,elem): # 前端插入 p=LNode(elem) if self._rear is None: p.next=p # 建立一個結(jié)點的環(huán) self._rear=p else: p.next=self._rear.next self._rear.next=p def append(self,elem): # 尾端插入 self.prepend(elem) self._rear = self._rear.next def pop(self): # 前端彈出 if self._rear is None: raise LinkedListUnderflow('in pop of CLList') p = self._rear.next if self._rear is p: self._rear =None else: self._rear.next=p.next return p.elem def printall(self): # 輸出表元素 if self.is_empty(): return p = self._rear.next while True: print(p.elem) if p is self._rear:break p=p.nextclass LinkedListUnderflow(ValueError): # 自定義異常 passclass Josephus(LCList): def __init__(self,n,k,m): LCList.__init__(self) for i in range(n): self.append(i+1) self.turn(k-1) while not self.is_empty(): self.turn(m-1) print(self.pop(),end=('n' if self.is_empty() else ', ')) def turn(self,m): for i in range(m): self._rear = self._rear.next

到此這篇關(guān)于使用python從三個角度解決josephus問題的方法的文章就介紹到這了,更多相關(guān)python josephus問題內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
7777精品伊人久久久大香线蕉的 | 欧美激情一区二区三区蜜桃视频| 日本午夜精品一区二区三区电影| 亚洲国产成人不卡| 国产肉丝袜一区二区| 国产在线不卡视频| 色999日韩国产欧美一区二区| 午夜欧美一区二区三区在线播放| 一区二区三区四区国产| 亚洲理论在线观看| 亚洲激情一区二区三区| 国产精品电影院| 海角社区69精品视频| 久久久久久9999| 99久久99精品久久久久久| 日韩一区二区麻豆国产| 国产成人自拍网| 欧美日韩高清影院| 久久精品国产网站| 欧美自拍偷拍午夜视频| 午夜精品久久久久久久蜜桃app| 国产情侣一区| 午夜亚洲福利老司机| 久久一本综合频道| 日韩电影在线免费| 色婷婷亚洲精品| 天天亚洲美女在线视频| 久久久久久久尹人综合网亚洲| 亚洲电影一级黄| 噜噜噜噜噜久久久久久91| 午夜视黄欧洲亚洲| 色婷婷精品大视频在线蜜桃视频| 日韩二区三区四区| 欧美亚男人的天堂| 精品一区二区在线观看| 欧美日韩在线精品一区二区三区激情 | 久久99精品久久只有精品| 欧美日韩一区视频| 国产一区二区三区在线观看免费| 欧美一级夜夜爽| 99热99精品| 国产精品久久久久影院亚瑟| 亚洲欧洲久久| 亚洲成人动漫在线观看| 91福利小视频| 精品一区二区三区蜜桃| 欧美一级xxx| 99久久伊人久久99| 中文av字幕一区| 一区福利视频| 亚洲成人久久影院| 欧美日韩在线不卡| 成人精品一区二区三区四区| 国产午夜亚洲精品理论片色戒 | 91精品婷婷国产综合久久竹菊| 国产精品一区专区| 久久久久亚洲蜜桃| 91久久亚洲| 免费av成人在线| 精品欧美一区二区三区精品久久| 国产精品av久久久久久麻豆网| 一区二区三区四区亚洲| 色婷婷久久久久swag精品| 国产精品一色哟哟哟| 国产欧美日韩在线视频| 国产精品女主播一区二区三区| 麻豆freexxxx性91精品| 日韩欧美一区二区三区在线| 91在线看国产| 亚洲激情中文1区| 欧洲人成人精品| www.av精品| 一区二区三区日本| 欧美二区乱c少妇| 欧美日韩一区二区三区在线视频| 亚洲影视资源网| 欧美精品 国产精品| 国产精品v日韩精品v欧美精品网站| 一区二区三区精品在线| 欧美日韩精品一区二区| 欧美一区精品| 午夜精品一区二区三区免费视频| 欧美一级爆毛片| 9色精品在线| 国产精品一区二区免费不卡| 国产精品视频一区二区三区不卡| 久久亚洲精选| 成人自拍视频在线| 亚洲色图色小说| 欧美日韩精品一区视频| 国产精品国码视频| 午夜精品久久久久久久99樱桃| 日韩三区在线观看| 一区二区动漫| 国产在线视频精品一区| 国产精品久久久久久久久搜平片| 色婷婷精品久久二区二区蜜臀av | 久久亚洲视频| 午夜激情一区| 日本网站在线观看一区二区三区 | 免费xxxx性欧美18vr| 国产免费成人在线视频| 色爱区综合激月婷婷| 欧美成人精品| 男男成人高潮片免费网站| 国产人妖乱国产精品人妖| 91黄色免费观看| 色综合天天综合给合国产| 日韩欧美色电影| 国产婷婷精品| 丁香婷婷综合色啪| 亚洲bt欧美bt精品777| 久久久综合激的五月天| 久久综合狠狠| 欧美精品午夜| 国产一区二区三区香蕉| 亚洲午夜一区二区| 精品国产乱码久久久久久免费| 色哟哟一区二区在线观看| 亚洲无毛电影| 成人综合婷婷国产精品久久| 丝袜诱惑亚洲看片| 国产精品女上位| 91精品国产色综合久久不卡蜜臀 | 99热免费精品| 你懂的国产精品| 国内精品国产三级国产a久久| 亚洲黄色免费网站| 亚洲精品在线三区| 欧美四级电影网| 伊人成年综合电影网| 国产精品99久久久久久有的能看| 亚洲成人av在线电影| 欧美高清在线一区二区| 日韩一区二区三| 欧美少妇性性性| 亚久久调教视频| 伊人蜜桃色噜噜激情综合| 国产成人精品一区二| 日本成人在线电影网| 亚洲精品视频在线| 国产欧美日韩视频一区二区 | 久久久精品国产免费观看同学| 极品美女销魂一区二区三区 | 国产午夜三级一区二区三| 久久经典综合| 精品69视频一区二区三区Q| 99久久99久久久精品齐齐| 国产乱人伦精品一区二区在线观看| 视频一区二区中文字幕| 亚洲裸体xxx| 91麻豆精品91久久久久久清纯| 国产在线精品一区二区三区不卡| 欧美久久视频| 欧美日韩精品福利| 国产精品乱子久久久久| 蜜臀av一区二区三区| 亚洲精品一二| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 蜜桃久久久久久| 欧美一区二区免费视频| 欧美电影免费观看高清完整版 | 一本久久精品一区二区| 欧美久久在线| 92精品国产成人观看免费| 成人蜜臀av电影| 国产精品一区二区x88av| 国产一区二区不卡老阿姨| 久久99精品网久久| 激情伊人五月天久久综合| 蜜臀91精品一区二区三区| 日日夜夜免费精品| 亚洲福利视频一区| 亚洲一区二区免费视频| 亚洲狠狠爱一区二区三区| 一区二区三区.www| 亚洲综合男人的天堂| 亚洲激情中文1区| 亚洲欧美另类综合偷拍| 亚洲情趣在线观看| 亚洲女人小视频在线观看| 亚洲欧美一区二区久久| 亚洲人吸女人奶水| 亚洲视频一二三区| 日韩美女久久久| 亚洲欧美日韩中文播放| 亚洲视频 欧洲视频| 亚洲精选视频在线| 亚洲男人的天堂一区二区 | 国产精品影视天天线| 国产乱码字幕精品高清av| 国产98色在线|日韩| 国产精品66部| 成人免费黄色大片| 91丨porny丨首页| 午夜精品999| 日韩一级欧洲| 亚洲综合社区| 色94色欧美sute亚洲线路一ni | 亚洲v中文字幕|