CCF练习(java)——小球碰撞

做的时候脑子一片混乱。。。

public class CollisionBalls {
    public void print(){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int L = scanner.nextInt();
        int t = scanner.nextInt();
        int[] position = new int[n];
        int[] speed = new int[n];
        int[] flag = new int[n];
       for(int i=0;i<n;i++){
           position[i]=scanner.nextInt();
           speed[i]=1;
           flag[i]=1;
       }
       while(t>0){
           for(int i=0;i<n;i++){
               position[i]+=speed[i];
               flag[i]=1;
           }
           for(int i=0;i<n;i++){
               for(int j=0;j<n;j++){
                   if(i!=j){
                       if(position[i]==position[j]){
                           if(flag[i]!=-1&&flag[j]!=-1){
                               speed[i]=speed[i]*-1;
                               speed[j]=speed[j]*-1;
                               flag[i]=-1;
                               flag[j]=-1;
                           }
                       }
                   }
                   else if(position[i]==L||position[i]==0){
                       speed[i]=speed[i]*-1;
                   }
               }
             }
           t--;
       }
       for(int i=0;i<n;i++){
           System.out.print(position[i]+" ");
       }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值