数据结构论坛

首页 » 分类 » 问答 » 数据结构与算法十
TUhjnbcbe - 2020/12/14 17:45:00

1.队列的应用:热土豆

?“击鼓传花”的土豆版本

?传烫手的热土豆,鼓声停的时候,手里有土豆的小孩就要出列。

热土豆问题(约瑟夫问题)

?如果去掉鼓,改为传过固定人数,就成了“现代版”的约瑟夫问题传说犹太人反叛罗马人,落到困境,约瑟夫和39人决定殉难,坐成一圈儿,报数1~7,报到7的人由旁边杀死,结果约瑟夫给自己安排了个位置,最后活了下来……

?用队列来实现热土豆问题的算法,参加游戏的人名列表,以及传土豆次数num,算法返回最后剩下的人名

?模拟程序采用队列来存放所有参加游戏的人名,按照传递土豆方向从队首排到队尾游戏时,队首始终是持有土豆的人

?模拟游戏开始,只需要将队首的人出队,随即再到队尾入队,算是土豆的一次传递,传递了num次后,将队首的人移除,不再入队如此反复,直到队列中剩余1人

frompythonds.basic.queueimportQueuedefhotPotato(namelist,num):simqueue=Queue()fornameinnamelist:simqueue.enqueue(name)whilesimqueue.size()1:foriinrange(num):simqueue.enqueue(simqueue.dequeue())simqueue.dequeue()returnsimqueue.dequeue()print(hotPotato(["Bill","David","Susan","Jane","Kent","Brad"],7))

--END--

数据结构与算法(一)

数据结构与算法(二)数据结构与算法(三)

数据结构与算法(四)-栈的实现

数据结构与算法(五)-栈的应用

数据结构与算法(六)-栈的应用

数据结构与算法(七)

数据结构与算法(八)-栈的应用

数据结构与算法(九)队列抽象数据类型

扫描下方

1
查看完整版本: 数据结构与算法十