码迷,mamicode.com
首页 > 其他好文 > 详细

校招 刷题

时间:2019-08-30 19:20:19      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:情况   div   +=   remove   col   span   第一个   约瑟夫环问题   长度   

1.约瑟夫环问题

思路:python列表,处理时有一定优势,因为可以随意拼接。

以前用c++ 写过一个。用循环链表。只需要构建一个循环列表就好。构建循环链表需要麻烦一些,但循环列表就是处理起来很方便。链表的删除很方便。

python程序的思路;

利用列表的可拼接性。

第一个while:

如果人数大于报的数,则直接可以去除,然后把去除的两边在拼接起来。

第二个while:(重点)

人数小于报的数,需要把列表直接拼接,拼接的列表,一定要大于报的数长度,为了避免特殊情况,长度大于列表现有长度+报数值,有时间复杂度要求,也可以用注释的替代。

然后去除值,截取现有长度-1(这个也要注意),直到列表只剩一个元素。


lis = [ i for i in range(1,101)] print(lis) m = 5 while len(lis) >= m: lis.remove(lis[m-1]) lis = lis[m-1:]+lis[0:m-1]
while len(lis) > 1:
n = len(lis)
print(n)
print(lis)
# if n < m:
# ind = m // n + 1
# # print(lis)
# lis = lis*ind + lis
# print(lis)
while len(lis) < m+n:
lis += lis
# print(len(lis))
# print(m-1)
lis.remove(lis[m-1])
lis = lis[m-1:m+n-2]
print(lis)

 

校招 刷题

标签:情况   div   +=   remove   col   span   第一个   约瑟夫环问题   长度   

原文地址:https://www.cnblogs.com/meikon/p/11436323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!