首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

求大伙儿帮忙看一道题,蚂蚁离开木杆

2013-04-20 
求大家帮忙看一道题,蚂蚁离开木杆-Acm改编:------------------------------------------Problem有一根m厘

求大家帮忙看一道题,蚂蚁离开木杆
-   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))

python
[解决办法]
貌似count没适时更新,是个死循环...

热点排行