CSP 试题编号201803-2 Java实现
package HB;
import java.util.Scanner;
public class Test_06 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int []data = new int[3];
for(int i=0;i<data.length;i++){
data[i] = input.nextInt();
}
//第二列表示每个小球的运动方向 右1左0
int [][]num = new int[data[0]][2];
for(int i=0;i<num.length;i++){
num[i][0] = input.nextInt();
num[i][1] = 1;
}
//时间片走完 输出结果
while(data[2]!=0){
data[2]--;
for(int i=0;i<num.length;i++){
//首先确定这一秒各自的位置
if(num[i][1]==1){
num[i][0]++;
}
else{
num[i][0]--;
}
}
//检查有木有走到端点的
for(int i=0;i<num.length;i++){
//左端 向右变向
if(num[i][0]==0){
num[i][1] = 1;
}
//右端 向左变相
else if(num[i][0]==data[1]){
num[i][1] = 0;
}
}
//检查有木有小球碰撞
int temp = 0;
for(int i=0;i<num.length;i++){
temp = num[i][0];
for(int j=i+1;j<num.length;j++){
if(temp == num[j][0]){
//反方向变向
if(num[i][1]==1){
num[i][1]=0;
}
else{
num[i][1]=1;
}
if(num[j][1]==1){
num[j][1]=0;
}
else{
num[j][1]=1;
}
}
}
}
}
for(int i=0;i<num.length;i++){
System.out.print(num[i][0]+" ");
}
}
}