201803-2 碰撞的小球
程序员文章站
2022-04-25 20:02:11
...
#include <iostream>
using namespace std;
const int M=110;
int ball[M];
int flag[M];
int main(){
int n,l,t;
cin>>n>>l>>t;
for(int i=0;i<n;i++){
cin>>ball[i];
flag[i]=1;
}
while(t--){
for(int i=0;i<n;i++){
if((ball[i]==0&&flag[i]==-1)||(ball[i]==l&&flag[i]==1)){
flag[i]=flag[i]*(-1);
}
}
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(ball[i]==ball[j]){
flag[i]=flag[i]*(-1);
flag[j]=flag[j]*(-1);
}
}
}
for(int i=0;i<n;i++){
ball[i]=ball[i]+flag[i];
}
}
for(int i=0;i<n;i++){
cout<<ball[i]<<" ";
}
}
思路:将小球初始存在一个数组,以一秒钟为一个时间进行模拟;
考虑在这一秒后,这个小球的位置应该为加一还是减一,设置另一数组存储这一秒应该变化的量;
然后将这一秒钟之后小球的位置进行变化;依次进行下一秒;
上一篇: 201803-1 跳一跳
下一篇: 201612-2 工资计算