劲舞团K连击最长长度计算:兼容log.in/log.txt/stdin的鲁棒Python解法
你贴出的错误信息: ``` no test data : no *.in file found ----time_space_table:---- ``` ✅ **这不是 Python 程序本身的报错**,而是你正在使用的**某个 OJ(在线评测系统)或本地评测脚本(如某校 ACM 自建平台、力扣企业题库、或老师提供的 checker)的提示**。 它说明: ❌ 该评测环境**期望输入来自 `xxx.in` 文件**(比如 `log.in`),而不是 `log.txt`; ❌ 但你的程序硬编码读取了 `"log.txt"`,而评测机只放了 `log.in`,所以找不到文件 → 触发这个提示; ❌ 后续的 `time_space_table` 是评测器试图统计时空但因读文件失败而中断。 --- ### ✅ 正确解决方案:**让程序自动适配常见输入文件名** 我们重写主逻辑,按以下优先级尝试读取: 1. `log.in`(OJ 常用) 2. `log.txt`(题目描述指定) 3. 标准输入 `sys.stdin`(兼容重定向 `python solve.py < log.in`) 同时保持全部健壮性(排序、过滤、滑动窗口等不变)。 --- ### ✅ 终极兼容版 Python 代码(支持 `.in` / `.txt` / stdin) ```python #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys import os def read_input_lines(): # 优先尝试 log.in if os.path.exists("log.in"): with open("log.in", "r", encoding="utf-8") as f: return f.readlines() # 其次尝试 log.txt elif os.path.exists("log.txt"): with open("log.txt", "r", encoding="utf-8") as f: return f.readlines() # 否则从 stdin 读(支持 python solve.py < log.in) else: return sys.stdin.read().splitlines() def main(): lines = read_input_lines() logs = [] for line_num, line in enumerate(lines, start=1): line = line.strip() if not line: continue parts = line.split() if len(parts) < 3: continue # 跳过格式错误行(不警告,避免 OJ 输出干扰) correct, actual, ts_str = parts[0], parts[1], parts[2] try: ts = int(ts_str) logs.append((ts, correct, actual)) except ValueError: continue # 跳过时间戳非法行 if not logs: print(0) return # ✅ 关键:严格按时间戳排序! logs.sort(key=lambda x: x[0]) # 提取正确敲击的时间戳(已有序) valid_ts = [ts for ts, c, a in logs if c == a] if not valid_ts: print(0) return # 滑动窗口求最长连续 K 连击(相邻间隔 ≤ 1000 ms) max_k = 1 left = 0 for right in range(1, len(valid_ts)): if valid_ts[right] - valid_ts[right - 1] <= 1000: max_k = max(max_k, right - left + 1) else: left = right # 断连,新起点 print(max_k) if __name__ == "__main__": main() ``` --- ### ✅ 使用方式(任选其一) | 场景 | 操作 | |------|------| | ✅ 本地测试(有 `log.in`) | 放 `log.in` 在当前目录,运行 `python solve.py` | | ✅ 本地测试(有 `log.txt`) | 放 `log.txt`,运行 `python solve.py` | | ✅ 重定向输入(推荐用于 OJ/脚本) | `python solve.py < log.in` | | ✅ Windows/Linux/macOS 全兼容 | 无路径硬编码,无中文编码问题 | --- ### 🔍 验证你的环境 运行这条命令,看输出什么: ```bash ls -l log.* # 或 Windows: dir log.* ``` 如果看到: - `log.in` → 用它; - `log.txt` → 也可用,但 OJ 很可能只认 `.in`; - 都没有?那你需要先创建测试文件 ✅ --- ### 🧪 快速创建测试 `log.in` 示例(复制保存即可) ```text A A 100 D D 1200 S F 2000 D D 2100 D D 3050 D D 4000 F F 5001 ``` 保存为 `log.in`,再运行 `python solve.py` → 输出 `4` --- 需要我帮你: - ✅ 自动生成 `log.in` 测试数据(带边界 case)? - ✅ 转成 C++ / Java 版本? - ✅ 加入性能计时/内存检测(满足 time_space_table 要求)? - ✅ 输出调试日志开关(如加 `--debug` 参数)? 欢迎继续告诉我 👇 ######[AI写代码神器 | 1209点数解答 | 2026-03-06 12:25:13]
- HTML 中 JavaScript 代码功能分析、优化及注意事项揭秘(字节豆包 | 664点数解答 | 2025-06-17 14:30:03)181
- 测3:以读、二进制方式打开C盘temp文件夹下abc.txt文件的代码选哪个?(GPT | 15点数解答 | 2024-06-06 13:53:37)394
- 劲舞团K连击最长长度计算:基于时间戳的连续正确操作滑动窗口分析(阿里通义 | 1439点数解答 | 2026-03-06 12:20:14)11
- Linux 知识问答:判断文件 test.txt 是否存在的正确命令揭晓!(字节豆包 | 62点数解答 | 2024-11-22 17:14:08)284
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)450
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)373
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)361
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)344
- C语言实现:计算n个元素集合的非空子集划分数量(字节豆包 | 223点数解答 | 2025-04-02 08:32:25)226
- Shell脚本:用户密码验证、目录文件操作全流程实现及注意要点(字节豆包 | 466点数解答 | 2025-06-06 11:02:00)166
- Linux 终端操作全攻略:用户创建、文件处理、权限设置与日志查找(字节豆包 | 592点数解答 | 2025-06-12 21:19:29)170
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)408