版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38273578/article/details/84439676
题目
去官网看
思路
- 每个时刻检查是否有小球到达了端点,端点处逆向。
- 每个时刻检查是否有两个小球到达了同一点,碰撞时逆向
C++ 代码
#include <iostream>
using namespace std;
int main()
{
int n, l, t;
int r1[100], r2[100];
cin >> n >> l >> t;
for (int i = 0; i < n; ++i)
{
cin >> r1[i];
}
for (int i = 0; i < n; ++i)
{
r2[i] = 1;
}
for (int i = 0; i < t; ++i)
{
for (int j = 0; j < n; ++j)
{
if (r1[j] == 0||r1[j] == l)
{
r2[j] *= -1;
}
for (int k = 0; k < n; ++k)
{
if (r1[j] == r1[k] && j != k)
{
r2[j] *= -1;
r2[k] *= -1;
}
}
r1[j] += r2[j];
}
}
for (int i = 0; i < n; ++i)
{
cout << r1[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
参考
https://blog.csdn.net/qq_35445741/article/details/79966281