关于约瑟夫问题
http://baike.baidu.com/view/213217.htm
def jos(n,x):
li=[1]*n
k=0
while li.count(1)>1:
k= (x+k-1) % (li.count(1))
li[k]=0
print li
print jos(10,3)
def jos(n, x):
li = [1] * n
ids = range(n)
k = 0
while len(ids):
print li
k = (x + k -1) % len(ids)
id = ids.pop(k)
assert li[id] == 1
li[id] = 0
jos(10, 3)
def jos(n,x):
all=[1]*n
k=0
while all.count(1)>1:
step = x
while step>0:
k+=1;
k%=n
if all[k]==1:
step -= 1
all[k]=0
print(all)
jos(10,3)
#下面是结果:
#[1, 1, 1, 0, 1, 1, 1, 1, 1, 1]
#[1, 1, 1, 0, 1, 1, 0, 1, 1, 1]
#[1, 1, 1, 0, 1, 1, 0, 1, 1, 0]
#[1, 1, 0, 0, 1, 1, 0, 1, 1, 0]
#[1, 1, 0, 0, 1, 1, 0, 0, 1, 0]
#[1, 0, 0, 0, 1, 1, 0, 0, 1, 0]
#[1, 0, 0, 0, 1, 1, 0, 0, 0, 0]
#[1, 0, 0, 0, 1, 0, 0, 0, 0, 0]
#[0, 0, 0, 0, 1, 0, 0, 0, 0, 0]