零分答案,写的真是让我开(难)心(过)极了!!=.=
以后再纠错吧。。。。。。。
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;
}
}