题目来源
题目描述
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
题目解析
该题目描述内容比较多,但是逻辑并不复杂。简化一下内容即为:
第一行:n 个学生 m 老师可以询问或者更新m次
第二行:1~ n 个学生的成绩,学生ID也从 1 ~ n
m 行:老师操作 Q 询问指定ID范围的学生成绩,输出最高成绩;老师操作 U 更新指定ID的学生成绩
循环执行m次,如果输入Q进行最大分数计算,如果输入U进行分数更新
题目解答
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0;
int m = 0;
while (scanner.hasNext()) {
n = scanner.nextInt(); //学生数量
m = scanner.nextInt(); //老师可以操作的次数
int[] stu = new int[n];//学生成绩
for (int i = 0; i < n; i++) {
stu[i] = scanner.nextInt();
}
//老师询问
for (int i = 0; i < m; i++) {
String c = scanner.next();
int a = scanner.nextInt();
int b = scanner.nextInt();
if (c.equals("Q")) {
int s = Math.min(a, b);//开始下标
int e = Math.max(a, b);//结束下标
int max = stu[s - 1];
//计算出 [s-1 , e)范围的最大值
for (int index = s; index < e; index++) {
max = Math.max(max, stu[index]);
}
System.out.println(max);
}
if (c.equals("U")) {
stu[a - 1] = b;
}
}
}
}
}