Pythonはデータ構造キュージョセフループの問題を実現する
1276 ワード
問題の説明:
人々は処刑を待つ輪に立っている.カウントは、円の指定された点から始まり、指定された方向に円の周りに行われます.指定された数の人をスキップした後、次の人を実行します.残りの人に対してこの過程を繰り返し、次の人から同じ方向に同じ数の人をスキップし、一人だけが残るまで釈放される.問題は、人数、開始点、方向、スキップする数値を指定し、初期の円の位置を選択して処刑を避けることです.
ジョセフループはキューで実装され、次のコードはPythonで記述されたジョセフループの問題です.
人々は処刑を待つ輪に立っている.カウントは、円の指定された点から始まり、指定された方向に円の周りに行われます.指定された数の人をスキップした後、次の人を実行します.残りの人に対してこの過程を繰り返し、次の人から同じ方向に同じ数の人をスキップし、一人だけが残るまで釈放される.問題は、人数、開始点、方向、スキップする数値を指定し、初期の円の位置を選択して処刑を避けることです.
ジョセフループはキューで実装され、次のコードはPythonで記述されたジョセフループの問題です.
class List(object):
#
def __init__(self):
self.list = []
#
def Empty(self):
return self.list == []
#
def Join(self,item):
self.list.insert(0, item)
#
def Pop(self):
return self.list.pop()
#
def Length(self):
return len(self.list)
def Johnson(k, namelist):
s = List()
#
for i in range(len(namelist)):
s.Join(namelist[i])
print(namelist)
i = 1
#
while s.Length() != 1:
temp = s.Pop()#
if (i != k):
s.Join(temp)#
else:
i=0#
i=i+1
return s.Pop()#
if __name__ == '__main__':
nameList = ['Aha', 'Bob', 'Cindy']
print("
:")
print("
:"+Johnson(2,nameList))
結果: :
['Aha', 'Bob', 'Cindy']
:Cindy