From cdb3700251b89a2f9e2d8e59179f7b071c7ad41c Mon Sep 17 00:00:00 2001 From: Guanforever <2307786059@qq.com> Date: Mon, 30 Jun 2025 13:18:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E4=B8=81=20:=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E4=BA=86dp=E8=B7=AF=E5=BE=84=E9=95=BF=E5=BA=A6=E4=B8=8D?= =?UTF-8?q?=E4=BC=98bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SourceCollector.py | 20 +++++--------------- maze_generator.py | 3 +-- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/SourceCollector.py b/SourceCollector.py index 1fb2de9..652fa9c 100644 --- a/SourceCollector.py +++ b/SourceCollector.py @@ -138,24 +138,14 @@ class SourceCollector: sn.dp = sn.val sn.final_pos = sn.pos sn.path = [sn] - # 对子节点按收益/距离优先遍历 + # 先对子节点全部深搜一遍,收集路径长度 children = sn.children[:] - # 计算每个child的“贪心优先级”:金币优先,距离近优先 - def child_priority(child): - # 距离=曼哈顿距离 - dist = abs(child.pos[0] - sn.pos[0]) + abs(child.pos[1] - sn.pos[1]) - # 金币优先,陷阱次之 - print(dist) - if self.maze[child.pos[0]][child.pos[1]].startswith('g'): - return (0, dist) # 金币优先,距离近优先 - elif self.maze[child.pos[0]][child.pos[1]].startswith('t'): - return (2, dist) # 陷阱最后 - else: - return (1, dist) # 普通通路 - children.sort(key=child_priority) + for child in children: + self.dfs(child) + + children.sort(key=lambda c: len(c.path)) cur = None for idx, child in enumerate(children): - self.dfs(child) if child.dp > 0: sn.dp += child.dp if cur is not None: diff --git a/maze_generator.py b/maze_generator.py index 2d40404..302aa6b 100644 --- a/maze_generator.py +++ b/maze_generator.py @@ -374,9 +374,8 @@ def main(): print("\n读取的迷宫:") reader.print_maze() for i in generator.get_history_mazes(): - for j in i : + for j in i: print(j) - print() if __name__ == "__main__":