一尘不染

以编程方式解决魔方

algorithm

我正在尝试开发一个用于解决C语言中的魔方的程序。为此,我使用了回溯技术。这是一个很长的过程,并且需要很多次迭代,所以我无法解决它。

请给我有关如何更有效地解决此问题的建议-例如其他技术或采用回溯本身。在Google中,我找到了许多解决此问题的捷径,但我不想使用捷径来解决。


阅读 303

收藏
2020-07-28

共1个答案

一尘不染

为什么不使用以人为本的解决方案并对此进行编程。

您需要一些模式匹配,但这并不难。(此外,还有一些解决1000x1000x1000的程序)。

基本思想是分阶段工作:

  • 第一层
  • 第二层
  • 第三层

对于每一层,您都实现了一些将模式X转换为模式X’的算法。一个阶段的每个步骤都应使多维数据集接近求解。您可以通过在每个模式中添加一个值来实现(将更高的值分配给更多未解决的多维数据集)。您还可以添加难度(例如转数),以便可以基于每个难度的最佳值增益来选择算法(或以最少的转数获得最佳结果)。

这种方法的乐趣在于,您可以根据需要添加新算法并测试使用频率。因此,您可以测试每种算法的有用性。

如果您真的想赚取这些极点,请创建一种单独的语言来描述算法及其正在解决的模式。

2020-07-28