日志采集是运维系统的核心组件。日志按行生成,每行记做一条,由采集系统分批上报。 为此,项目组设计了如下的上报策略: 1、每成功上报一条日志,奖励1分 2、每条日志每延迟上报1秒,扣1分 3、积累日志达到100条,必须立即上报 给出日志序列,根据该规则,计算首次上报能获得的最多积分数,使用java代码编写 输入描述:按时序产生的日志条数T1,T2...Tn,其中1<=n<=1000,0<=Ti<=100 输出描述:首次上报最多能获得的积分数
时间: 2023-05-15 18:04:36 浏览: 66
以下是Java代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] logs = new int[n];
for (int i = 0; i < n; i++) {
logs[i] = scanner.nextInt();
}
int score = 0;
int delay = 0;
for (int i = 0; i < n; i++) {
score++;
if (logs[i] > delay) {
score -= logs[i] - delay;
delay = logs[i];
}
if (i == n - 1 || i % 99 == 98) {
break;
}
}
System.out.println(score);
}
}
解释一下代码的实现思路:
首先读入日志序列,然后按照题目要求模拟计算积分。具体来说,我们用变量score来记录当前的积分,用变量delay来记录当前的延迟时间。对于每一条日志,我们都加1分,然后判断它的延迟时间是否比当前的延迟时间要大,如果是,就扣除相应的分数,并更新延迟时间。最后输出score即可。
注意,题目要求积累日志达到100条时必须立即上报,因此我们在循环中加了一个判断,当i为99的倍数时,就强制退出循环,以模拟积累到100条时的情况。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)