我现在制作 15 谜题求解器(在 C++ 中),但我的程序不仅必须解决 15 谜题,还必须解决 3x4 谜题、8x8 谜题等...... - > X x Y 谜题。我必须以某种方式保留有关已访问状态的信息,我的第一个想法是制作树,例如:
拼图:
状态 1
1 2
3 0
状态 2
1 3
0 2
我保留在我的树上:
根->1->2->3->0
\_
\->3->0->2
这也适用于所有谜题的 5x3、6x6 等谜题
这个想法行得通,但是它浪费了很多内存,并且添加节点需要一些时间:/所以它非常低效。
下一个想法是在 stl 的 std::map< > 中保持访问状态,但我不知道如何制作好的散列函数 - 从拼图状态制作快捷方式(因为我不必存储拼图状态,我只需要信息已被访问。对于 std::map 的密钥或其他保持信息已被访问的想法,您有什么想法吗?