微信号:Pythontab

介绍:Python中文开发者学习交流平台,中国最好的Python社区.python教程、python基础教程、Django教程、python入门、web.py教程、linux教程、python web、python中文手册

用Python实现约瑟夫环算法

2019-06-12 17:01 PythonTab中文网

面试的过程中遇到了这个问题。就是经典的约瑟夫环。总共有41个人,排成一排,数到3的人自杀,问最后剩下的是那两个号码?

这个题目最早是用指针实现的。在我面试python的过程中遇到了,我嫌麻烦,所以只写了伪代码。后来想来一下,这样实在是表现太差劲啊。python是很方便的,为什么非要用指针去实现呢,这也表现出我对语言的实用不熟练吧。这也是我面试过程中表现最突出的问题。好吧,分析一下,其实很简单,就是数数,只不过死去的人不参与计数。只需要建一个死人的list,然后在从活人的list中循环数,知道剩下2个人,就是输出结果。下面是实现过程。



import  os
cnt  =  1
dead  =  []
  
def  ans(t):
     global  cnt,dead
     for  in  t:
         if  in  dead:
             continue
         if  cnt = = 3 :
             dead.append(i)
             print  dead
             cnt  =  1
         else :
             cnt + = 1
  
if  __name__ = = '__main__' :
     =  9
     =  range ( 1 ,s, 1 )
     while  len (dead)<s  -  3 :
         ans(p)
     for  in  p:
         if  not  in  dead:
             print (i)


其实用python 还是很容易实现的,比写c的链表不知道简单了多少倍。除非你想练习一下 链表。


 
Pythontab中文网 更多文章 Python中lambda表达式的优缺点及使用场景 Python3 列表list合并的4种方法 Python3中_和__的用途和区别 爱奇艺面试Python,竟然挂在第5轮…… 2分钟讲清楚Unicode,UTF-8和UTF-16的区别与联系
猜您喜欢 1024|年轻的程序员,你真的准备好投身创业公司了吗? Android是如何改变了嵌入式格局的? 我眼中的DevOps 改变。