酷代码 AI
菜单
服务商

劲舞团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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]