首页 > 编程语言 > 详细

csp 碰撞的小球 python

时间:2019-10-25 20:58:35      阅读:119      评论:0      收藏:0      [点我收藏+]

运行错误了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=" ")

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

csp 碰撞的小球 python

原文:https://www.cnblogs.com/yz-lucky77/p/11740657.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!