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]+" ");
	}
}

}

posted @ 2018-09-14 20:08  Loading~  阅读(543)  评论(0编辑  收藏  举报