CCF CSP 201803-2 碰撞的小球 (python语言实现)

CCF CSP 201803-2 碰撞的小球

原题目:题目可点击此链接

n,l,t=map(int,input().split())
ball=list(map(int,input().split()))
ls=[]
for i in range(n):
    ls.append(1) #设置运动方向列表,1为向右,-1为向左,初始运动状态为1
for i in range(t):
    for j in range(n):
        if (ls[j]==1and ball[j]<l and ball.count(ball[j])==1)or ball[j]==0 or(ls[j]==-1 and ball.count(ball[j])>1):
        #判断运动方向向右的三个条件:
        #1,运动方向列表为1且当前位置不在终点 
        #2,当前位置为起点 
        #3,运动方向列表为-1且该位置上有两个小球(碰撞后往相反的方向)
            ls[j]=1  
            ball[j]+=1
            if ball.count(ball[j])>1:
                ls[j]=-1   #如运动后发生碰撞,修改方向
        elif (ls[j]==-1and ball[j]>0 and ball.count(ball[j])==1)or ball[j]==l or (ls[j]==1 and ball.count(ball[j])>1):
            ls[j]=-1
            ball[j]-=1
            if ball.count(ball[j])>1:
                ls[j]=1
for i in range(n):
    print(ball,end="")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值