1. 程式人生 > >CCF-CSP 練習題 碰撞的小球

CCF-CSP 練習題 碰撞的小球

題目

這裡寫圖片描述

分析

設定一個二維陣列,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; }