我正在尝试用 Python 解决食人族与传教士问题(有一些额外的条件,但主要思想是经典的)。
因此,在Graph
类中,我初始化了状态(食人族的数量,传教士的数量,船上的可用座位,食物单位(如果食人族比传教士多,传教士可以喂食人族),等等)。
然后我有genereazaSuccesori
方法,这个方法没有按预期工作,因为我做错了什么,我不知道是什么。所以这个方法应该为一个节点(参数nodCurent
)生成后继节点。
从我在 Pycharm 中调试时看到的情况来看,主要问题是我的程序在执行第三个for
循环之前不知何故退出了(我在那里添加到listaSuccesori
),所以返回的数组是空的。
有谁知道我的代码哪里出错了?特别是为什么我的代码没有执行第三个for
循环?
即使是一个完整实现了这个问题的 Python 示例链接也会对我有帮助(但必须是包含食物的那个,因为这里的情况会更复杂,基本版本相当简单)。
谢谢!
solver.py
:
...
input.txt
:
...
实际输出:
...
回答:
为了找出到底是什么阻止了您描述的那个for
循环的执行,我在您提供的脚本的第126行插入了一个简单的print
语句:
第124到127行的内容现在是(保持原有缩进):
...
我的输出是:
...
要使range(start, stop)
非空,它必须满足条件start < stop
。
然而,我们观察到,无论是因为输入还是其他原因,范围确实是空的。因此,您的for
循环执行了正好0次(用文字说:零次)。