CCF 2018/03/02 碰撞的小球

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38273578/article/details/84439676

题目

去官网看

思路

  1. 每个时刻检查是否有小球到达了端点,端点处逆向。
  2. 每个时刻检查是否有两个小球到达了同一点,碰撞时逆向

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

猜你喜欢

转载自blog.csdn.net/qq_38273578/article/details/84439676