#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n,l,t;
int p[N],s[N];
int main()
{
cin >> n >> l >> t;
for(int i=1;i<=n;i++) s[i]=1; //速度
for(int i=1;i<=n;i++) cin >> p[i]; //位置
for(int k=1;k<=t;k++)
{
for(int i=1;i<=n;i++)//处理位置移动
p[i]+=s[i];
for(int i=1;i<=n;i++)//处理速度移动
if(p[i]==0 || p[i]==l)
s[i]=-s[i];
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++) //注意这里j不能从1开始,否则速度可能会改变两次
{
if(i!=j && p[i]==p[j])
{
s[i]=-s[i];
s[j]=-s[j];
}
}
}
for(int i=1;i<=n;i++)
cout << p[i] << " ";
return 0;
}
csp-碰撞的小球
最新推荐文章于 2025-11-25 10:01:10 发布
这是一个C++程序,用于模拟n个小球在长度为l的线性空间内碰撞的过程。每个小球有固定的速度,在每一步中,小球会根据速度移动,并在相遇时改变方向。程序在t步后输出所有小球的位置。
435

被折叠的 条评论
为什么被折叠?



