csp 碰撞的小球 python

运行错误了n次,不知道为什么,然后百度找了一下答案,提交没问题 慢慢探索终于发现了问题所在。

n,l,t=map(int,input().split(" "))
a=list(map(int,input().split())) #原来这里写错了 在括号里面加了" " 也就是split(" ")  我也不知道为啥不对,大概跟前面的list有关吧
temp=[i for i in a]
a.sort()
d1=l-a[-1]
mark=[1 for i in range(n+1)]
temp.insert(0,0)
if(t<=d1):
    for i in range(1,n+1):
        temp[i]=temp[i]+t
else:
    num=[0 for i in range(l+1)]
    for i in a:
        num[i]=1
    for t2 in range(t):
        for q in range(1,n+1):
            num[temp[q]]-=1
            temp[q]=temp[q]+mark[q]
            num[temp[q]]+=1
        
        for k in range(1,l):
            if(num[k]==2):
                for i in range(1,n+1):
                    if(temp[i]==k):
                        mark[i]=-mark[i]
        for i in range(1,n+1):
            if(temp[i]>=l):
                mark[i]=-1
            if(temp[i]<=0):
                mark[i]=1
for i in range(1,n+1):
    print(temp[i],end=" ")

下面是简化代码,也是一直运行错误之后参考的代码

n,l,t=map(int,input().split(" "))
a=list(map(int,input().split()))###这里很重要
temp=[i for i in a]
mark=[1 for i in range(n)]
for t2 in range(t):
    for q in range(n):
        if(temp[q]<=0 or temp[q]>=l):
            mark[q]=-mark[q]
        for i in range(q+1,n):
            if(temp[i]==temp[q]):
                mark[i]=-mark[i]
                mark[q]=-mark[q]
    for i in range(n):
        temp[i]=temp[i]+mark[i]

for i in range(n):
    print(temp[i],end=" ")

如果看到这篇,并且知道为啥那样运行错误,欢迎告知!

posted @ 2019-10-25 20:19  阳光中的影子  阅读(451)  评论(0编辑  收藏  举报