#include<bits/stdc++.h>
using namespace std;
const int N = 110;
struct node {
int pos;
int v;
}a[N];
int main() {
int n,l,t;
scanf("%d%d%d",&n,&l,&t);
for(int i=0;i<n;i++) {
scanf("%d",&a[i].pos);
a[i].v=1;
}
while(t--){
//TODO
for(int i=0;i<n;i++) {
a[i].pos+=a[i].v;
if(a[i].pos==l||a[i].pos==0) {
a[i].v*=-1;
}
}
for(int i=0;i<n;i++) {
for(int j=i+1;j<n;j++) {
if(a[i].pos==a[j].pos) {
a[i].v*=-1;
a[j].v*=-1;
}
}
}
}
for(int i=0;i<n;i++) {
printf("%d ",a[i].pos);
}
return 0;
}
碰撞的小球
最新推荐文章于 2024-10-18 18:23:24 发布
这段代码实现了一个简单的粒子碰撞模拟,其中粒子在0到l的区间内移动。粒子的初始位置由输入给出,每次迭代时,粒子会根据其速度改变位置。如果粒子到达边界,速度会反转;如果两个粒子相遇,它们的速度也会反转。程序最终输出所有粒子的位置。
摘要由CSDN通过智能技术生成