题目要求
分析
这题唯一令我困惑的是如何做到两两比较且不重复。
后来想了想,其实也简单。
我直接想到了排列组合,所以就觉得很复杂,其实确实不复杂,我们只需要遍历的时候让内层循环的j比i大就好了,这样就会除掉一半的情况(重复的部分),用Math.abs()进行判断即可~~
AC代码(Java语言描述)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
int[] chinese_array = new int[num], math_array = new int[num],
english_array = new int[num], grade_array = new int[num];
for (int i = 0; i < num; i++) {
String str = scanner.nextLine();
String[] arr = str.split(" ");
chinese_array[i] = Integer.parseInt(arr[0]);
math_array[i] = Integer.parseInt(arr[1]);
english_array[i] = Integer.parseInt(arr[2]);
grade_array[i] = chinese_array[i] + math_array[i] + english_array[i];
}
int counter = 0;
for (int i = 0; i < num; i++) {
for (int j = i+1; j < num; j++) {
if (Math.abs(chinese_array[i]-chinese_array[j]) <= 5 &&
Math.abs(math_array[i]-math_array[j]) <= 5 &&
Math.abs(english_array[i]-english_array[j]) <= 5 &&
Math.abs(grade_array[i]-grade_array[j]) <= 10) {
counter++;
}
}
}
scanner.close();
System.out.println(counter);
}
}