答案 0 :(得分:5)
答案 1 :(得分:3)
答案 2 :(得分:1)
我想我可能有更好的主意。我没有对它进行测试,但我确信它会比大区域的纯粹强力解决方案更快。
首先,创建一个空集(“set”是一个只包含唯一对象的集合)的节点。此集合将用于识别哪些图块需要修复的连接断开。
根据您的个人标准使用您认为最合适的数据来填充数据结构以代表具有可用部分的电路板,而不考虑解决方案的正确性。这几乎肯定会导致你进入无效状态,但现在也没关系。通过电路板迭代,找到所有连接通向无处的瓷砖。将它们添加到一组破碎的瓷砖中。
现在,遍历集合。通过减少连接数来更改它所指向的 (否则您可能会进入无限循环),因此它们没有断开的连接,尊重当前可用的部分。再次检查他们的邻居,如果你断开了与其他瓷砖的连接,也可以将它们添加到一组破碎的瓷砖中。
一旦断开连接的集合为空,你应该有一个漂亮的模式。但请注意,它有一个重要的警告:它可能倾向于过度简化模式,因为“修复”阶段将始终尝试减少连接数。您可能必须幸运地获得有趣的图案,因为这可能会受到您放在每个瓷砖上的第一件作品的极大影响。