1.题目
2.题解
package 周赛;
import java.util.Scanner;
public class 乘飞机_12421 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();//数组长度
int m = scanner.nextInt();//区间个数
int a[] = new int[n];
int b[][] = new int[m][2];
for (int i = 0; i < a.length; i++) {
a[i] = scanner.nextInt();
}
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < 2; j++) {
b[i][j] = scanner.nextInt();
}
}
for (int i = 0; i < b.length; i++) {
//这里要一个开关,控制下面的两个for循环是否继续执行的变量
boolean flag = false;
//两个for循环的作用就是任意两个数之间比较一下
for (int j = b[i][0]-1; j < b[i][1]; j++) {
for (int j2 = j+1; j2 < b[i][1]; j2++) {
if (Math.abs(a[j]-a[j2])<=365) {
System.out.println("YES");
flag = true;
break;
}
}
if (flag) break;
}
if (!flag) System.out.println("NO");
}
}
}
3.总结
这道题目看起来很简单,只需要判断一个区间数组中是否存在两个数之差小于等于365。但实际上,解决这个问题可能会遇到段错误或运行超时等问题。上面的题解虽然提供了一些解决方案,但是仍然无法通过所有测试点,只能通过90%的测试点。因此,如果有能力的话,可以尝试优化算法,以通过所有测试点。