蓝桥杯刷题-劲舞团
现在给出一局小蓝的游戏记录文件,log.txt 中记录了 N 条记录,每条记录有三个字段,依次为正确的敲击字符、小蓝打出的字符、打出字符的时间对应的毫秒时间戳。这是一道填空题,下面附上我的代码,本人初学者水平有限,答案是9,我的代码跑出来是8,是因为当为二连击时,我才开始计算为连击,理解和题目有些出入,我刚开始以为两次才算一连击,然后后面通不过洛谷测试查看答案才发现有偏差,经过测试代码除了这点缺陷
题目描述
小蓝最近迷上了一款名为“劲舞团”的游戏,具体来说,只要按照游戏中给出的键位提示依次按出对应的键位,游戏人物便可以跟随节奏跳舞。对于连续的 K 次正确敲击,如果任意连续的两次敲击间间隔时间都小于等于 1s,那么 我们称这是一次 K 连击。现在给出一局小蓝的游戏记录文件,log.txt 中记录了 N 条记录,每条记录有三个字段,依次为正确的敲击字符、小蓝打出的字符、打出字符的时间对应的毫秒时间戳。现在请你计算下最长的 K 连击是多少,你 只需要输出 K 的值。
这是一道填空题,下面附上我的代码,本人初学者水平有限,答案是9,我的代码跑出来是8,是因为当为二连击时,我才开始计算为连击,理解和题目有些出入,我刚开始以为两次才算一连击,然后后面通不过洛谷测试查看答案才发现有偏差,经过测试代码除了这点缺陷其他没有任何问题,过程有点冗余,恳请大神指导!共同进步!
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.File;
public class Main {
public static void main(String[] args) {
String filePath="C:\\Users\\xiaomi\\Desktop\\log.txt";
int max=0;
long time1=0;
long time2=0;
int location=0;
int linenumber=0;
try {
// 创建 Scanner 对象
Scanner scanner = new Scanner(new File(filePath));
// 逐行读取文件
int temp=0;
while (scanner.hasNextLine()) {
linenumber++;
String line = scanner.nextLine();
String part1,part2;
String[] wordline=line.split(" ");
part1=wordline[0];
part2=wordline[1];
//每次的时间
time1=Long.parseLong(wordline[2]);
//如果两次都敲击对的两组数据时间间隔小于一秒就记为一次连击
if (part1.equals(part2)&&(time1-time2)<1000&&(linenumber-location)==1) {
temp++;
}
if (temp>max) {
max=temp;
}
//如果出现了没敲击对的情况直接清空连击次数,或者时间间隔超过1000
else if((time1-time2)>1000||!(part1.equals(part2))){
temp=0;
}
//符合条件的时间
if(part1.equals(part2))
{
time2=Long.parseLong(wordline[2]);
location=linenumber;
}
// System.out.println(line);输出文档
}
// 关闭 Scanner
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("文件未找到: " + e.getMessage());
}
System.out.println(max);
}
}
更多推荐
所有评论(0)