CCF-CSP 練習題 碰撞的小球
阿新 • • 發佈:2018-12-09
題目
分析
設定一個二維陣列,a[i][j],i存放第i個小球,j為小球運動的方向,1為右移,0為左移,初始化為1。執行時間為t,遍歷t次,記錄每一次小球的位置和運動方向。當小球在終點,則改變方向為0,然後左移;當小球在0點時,改變方向為1,然後右移。不在0點或終點的小球移動一次。所有小球運動一次之後,遍歷所有的小球,當前小球與其他小球比較,如果有其他小球與其在同一位置,則改變當前小球的運動方向。
程式碼
#include<iostream>
using namespace std;
int main()
{
int n;
int len;
int t;
int a[1024][2];
cin >> n >> len >> t;
for (int i = 0; i < n; i++)
{
cin >> a[i][0];
a[i][1] = 1;
}
for (int i = 0; i < t; i++)
{
for (int j = 0; j < n; j++)
{
if (a[j][0] == len)
{
a[j][1 ] = 0;
a[j][0]--;
}
else if (a[j][0] == 0)
{
a[j][1] = 1;
a[j][0]++;
}
else {
if (a[j][1] == 1)
{
a[j][0]++;
}
else
{
a[j][0]--;
}
}
}
for (int j = 0; j < n; j++)
{
for (int h = 0; h < n; h++)
{
if (j != h)
{
if (a[j][0] == a[h][0])
{
if (a[j][1] == 0)
{
a[j][1] = 1;
}
else
{
a[j][1] = 0;
}
}
}
}
}
}
for (int i = 0; i < n; i++)
{
cout << a[i][0]<<" ";
}
//system("pause");
return 0;
}