Advertisement

Python版《约瑟夫生死小说化生存模拟》游戏开发

阅读量:

问题描述

有30人乘坐一艘船,由于超载,必须让15人离开船只。众人按照顺序排成一列,其所在位置即为各自的编号。开始报数,从1依次数至9的人员需离船。重复这一过程,直至船上仅余下15人为止,那么最终哪些编号的人员会被要求离开呢?

算法思路

  1. 采用环形链表的方式建立相应的数据结构
  2. 当遇到能够被9整除的数值时,将对应的链表节点移除,并使指针指向后续的元素

核心代码

复制代码
    # 首先构造环形链表,这个很基本不多说
    # 删除链表操作
    while remain_people != 15:
    for ii in range(1,8):		# 前7次运动是没有任何问题的
        ptr = ptr.next
    else:						# 第8次运动,需要跳过第9个数,并将其删除
        # 打印9号链表
        print(ptr,'{}号下船了'.format(ptr.next.name))
        # 删除9号链表(同时跳过这个数)
        ptr.next = ptr.next.next
        remain_people -= 1
        # 指针向前运动一次
        ptr = ptr.next
    
    
    AI写代码p

全部评论 (0)

还没有任何评论哟~