现有 N(N\le 1000)N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中,有几对“旗鼓相当的对手”?同样一个人可能会和其他好几名同学结对。
输入格式
第一行一个正整数 NN。
接下来 NN 行,每行三个整数,其中第 ii 行表示第 ii 名同学的语文、数学、英语成绩。最先读入的同学编号为 1。
输出格式
输出一个个整数,表示“旗鼓相当的对手”的对数。
输入输出样例
输入
3 90 90 90 85 95 90 80 100 91输出 2
其实很简单,用二维数组存放数据,再用双重for循环来比较当前项和下一项的数据差的绝对值是否符合题意。
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int N=in.nextInt();
int sum[]=new int[N];
int a[][]=new int[1002][5];
for (int i = 0; i < N; i++) {
a[i][1]=in.nextInt();
a[i][2]=in.nextInt();
a[i][3]=in.nextInt();
sum[i]=a[i][1]+a[i][2]+a[i][3];
}
int cnt=0;
for (int i = 0; i <N; i++) {
for (int j =i+1; j <N; j++) {
if (Math.abs(a[i][1]-a[j][1])<=5 && Math.abs(a[i][2]-a[j][2])<=5 && Math.abs(a[i][3]-a[j][3])<=5 && Math.abs(sum[i]-sum[j])<=10){
cnt++;
}
}
}
System.out.println(cnt);
}
}