gpt4 book ai didi

java - 通过迷宫(地牢)的最快路径 Dijstkra

转载 作者:行者123 更新时间:2023-11-30 11:18:48 25 4
gpt4 key购买 nike

更新:

一些随机路径的输出我相信是这里造成的:

if(openlist[x][y]!=1){

if(min>copy[x][y]){
min=copy[x][y];
holdx = x;
holdy = y;
}
}

我相信在某些时候,当我的最短路径比另一条路径大时,它会测试每条路径(并输出它)。我将如何解决这个问题?

最佳答案

通过查看您的代码,我只能看出您没有正确地对状态进行主线化。您有一个名为 moveToPosition() 的方法,但它会为每个节点调用 - 您最终会将每个 x/y 组合添加到 paths 列表

老实说,其中很多都没有意义,而且我认为您遇到的问题不止一个。还有很多糟糕的编程技术会让你失分:

  • 不是 OO - 你到处都在使用静态。
  • 没有使用适当的范围 - 一切都是公开的
  • 没有意见
  • 没有解释它们包含什么的变量名称。
  • 将相同的变量用于不同的用途 (holdx)

如果我是你,我会尝试完成你的教授示例。它将教给您一些面向对象设计的可移植技能。我会忽略文件的整个读写过程。只需在一个方法中模拟一个快速的 Node[3][3] 迷宫并将其传递给初始方法。您还需要跟踪您是否已经访问过某个节点,但这应该很容易。

抱歉,我无能为力 - 我的解决方案与你的教授非常相似,你会发现同样难以理解,而且我反对为某人做作业 - 一个人不能那样学习,而且编程非常一旦你克服了最初的困难,就会很愉快。

一切顺利


作为在设置 size > 100 时对 StackOverflowError 的解决方案,您需要增加 stack 的大小。

要增加堆栈大小,请使用 Java VM 参数 -Xss 并将其设置为比默认值更大的值。

-Xss64M 应该可以解决问题。

作为解释,随着您增加 size 参数,您也在增加递归的数量,这意味着将越来越多的方法调用放入您的堆栈(如抛出错误时打印的非常长的堆栈所示)。要继续使用具有这么多递归的应用程序,您需要增加堆栈的大小。

查看此 SO question了解详情。

关于java - 通过迷宫(地牢)的最快路径 Dijstkra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23618135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com