本题是一道小模拟
规模小
难度在碰撞检测
在写模拟题时的思路应该是先找到应该储存的信息是哪些,抽象出来,应该模拟的方法是哪些。类似oop。
include
using namespace std;
const int L = 1000;
struct ball{
int p;
char d=1; //只可能为1或-1,表示方向
}b[L+1];
int main()
{
int n, l, t, i, j, k;
cin >> n >> l >> t;
for(int i = 0; i < n; i++)
cin >> b[i].p;
for( i = 0; i < t; i++) {
//模拟每一秒
for(int j = 0; j < n; j++) {
b[j].p += b[j].d;
if(b[j].p == l || b[j].p == 0)
b[j].d = -b[j].d;
}//先走后检测
for( j = 0; j < n; j++)//碰撞检测
for( k = j + 1; k < n; k++)
if(b[k].p == b[j].p)
b[k].d=-b[k].d, b[j].d = -b[j].d;
}
for(int i = 0; i < n; i++)
cout << b[i].p << " ";
cout << endl;
return 0;
}
标签:ccfcsp,int,cin,++,201803.2,100 From: https://www.cnblogs.com/likh2718/p/18322535