201803-2碰撞的小球



// exercise.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include<iostream>
using namespace std;

struct ball {
	int pos;//位置
	int dir;//方向,1为右
};
ball balls[101];

int main()
{
	int n,L,t;
	cin >> n >> L >> t;
	//初始化
	for (int i = 0; i < n; i++)
	{
		cin >> balls[i].pos;
		balls[i].dir = 1;
	}
	//模拟运行
	int T = 0;
	while (++T <= t)
	{
		for (int i = 0; i < n; i++)
		{
			switch (balls[i].dir)
			{
			case 1:balls[i].pos += 1; break;
			case -1:balls[i].pos -= 1; break;
			default:break;
			}
		}
		for (int i = 0; i < n; i++)
		{
			if (balls[i].pos == L)//撞墙,若撞则不可能碰撞
			{
				balls[i].dir = -1;
			}
			else if(balls[i].pos==0)
			{
				balls[i].dir = 1;
			}
			else
			{
				for (int j = i + 1; j < n; j++)
				{
					if (balls[i].pos == balls[j].pos)//碰撞
					{
						balls[i].dir = -balls[i].dir;
						balls[j].dir = -balls[j].dir;
					}
				}
			}

		}
	}

	for (int i = 0; i < n; i++)
	{
		cout << balls[i].pos << " ";
	}

	return 0;
}
原文地址:https://www.cnblogs.com/WuDie/p/11365671.html