CCF买菜 java

零分答案,写的真是让我开(难)心(过)极了!!=.=
以后再纠错吧。。。。。。。

5月7号来更错。。
以下是满分答案:

import java.util.*;
public class 买菜 {
public static void main(String[] args) {
	Scanner in=new Scanner(System.in);
	int n=in.nextInt();
	int[][]time=new int[n*2][];
	for(int i=0;i<time.length;i++){
		time[i]=new int[2];
		for(int j=0;j<2;j++)
			time[i][j]=in.nextInt();
	}
	sort(time);
	/*sort之后的结果集
			 * 1 3 
                2 4 
                5 6 
                5 7 
                9 13 
                10 11
                13 14
                14 15
			 */
	/*for(int i=0;i<time.length;i++){
	System.out.println(time[i][0]+" "+time[i][1]+" "+flag[i]);
}*/

System.out.println(chattime(time);
		
}
public static void sort(int[][]time){
	int[]temp1=new int[2];
	for(int i=0;i<time.length-1;i++){
		for(int j=0;j<time.length-1-i;j++){
			if(time[j][0]>time[j+1][0]){
				temp1=time[j+1];
				time[j+1]=time[j];
				time[j]=temp1;
			}	
			if(time[j][0]==time[j+1][0]){
				if(time[j][1]>time[j+1][1]){
					int temp2=time[j+1][1];
					time[j+1][1]=time[j][1];
					time[j][1]=temp2;
				}
			}
		}
	}
}

	public static int chattime(int[][] time) {
		int talknum = 0;
		for (int i = 0; i < time.length - 1; i++) {//把这个和之后的比较
			for(int j=i+1;j<time.length;j++){
				if(time[i][1]<=time[j][0])break;//例如排序之后的 2 4 、5 6,因为5>4,所以就跳出内层循环,再从5 6开始,将之后的组合和他进行比较。 
				else{
					if(time[j][1]<=time[i][1]){
						talknum+=time[j][1]-time[j][0];
					}else{
						talknum+=time[i][1]-time[j][0];
					}
				}
			}
		
		}

	return talknum;
	}
}




版权声明:本文为B_ling原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。