求大家帮忙看一道题,蚂蚁离开木杆
- Acm改编:------------------------------------------
Problem
有一根m厘米的细木杆,杆上非始末端不同位置存在k个蚂蚁。蚂蚁的目标是全部从木杆上离开,但在细木杆上只会朝前走或调头而不能后退。当任意两只蚂蚁碰头时,会同时调头朝反方向走。假定木杆很细,只能同时通过一只蚂蚁;蚂蚁长度可忽略且每秒钟可以走1厘米的距离。
Input
本题给定数据为两行,第一行是整数m(25<m<100);
第二行为k个整数(2<=k<=5),分别代表k个蚂蚁的位置;值代表离木杆始端的距离,若为正数则蚂蚁开始时头朝向末端,为负数则蚂蚁开始时头朝向始端。
Output
对于给定数据和规则,输出蚂蚁全部离开需要的秒数t及最后离开蚂蚁的初始位置值k(带正负号),用空格分开。
Sample Input
27
3 -7 11 -17 23
Sample Output
24 11
-------------------------------------------------
我用python写了个方法
现在只让返回时间先不考虑哪只最后离开
但是各种Shell无响应啊,这什么情况。
哪位大神能写个给参考一下~多谢了
def ant(m,*args):
t = 0
x = []
xx = [i for i in range(1,m)] #在木桥长度遍历
temp = []
#temp = (i for i in x if i in xx)
count = len(temp)
for arg in args:
x.append(arg)
num = len(x)
#last = x[0]
#return left
while 1:
if count != 1:
x = [i+1 for i in x]
t += 1
temp = (i for i in x if abs(i) in xx)
for j in range(0,num):
for k in range(0,num):
if j != k and abs(x[j]) == abs(x[k]):
x[j] = -x[j]
x[k] = -x[k]
else:
return t
#print (ant(10,-1,5))