擅长:python、mysql、java
<p>这可以使用广度优先搜索解决,例如使用<a href="https://rhettinger.github.io/puzzle.html" rel="nofollow noreferrer">Raymond Hettinger's puzzle solver</a>(页面底部解算器的完整代码):</p>
<pre><code>class SwapXYZ(Puzzle):
def __init__(self, pos):
self.pos = [x for x in pos]
self.goal = sorted(pos)
def __repr__(self):
return repr(''.join(self.pos))
def isgoal(self):
return self.pos == self.goal
def __iter__(self):
for i in range(len(self.pos)):
for j in range(i+1, len(self.pos)):
move = self.pos[:]
temp = move[i]
move[i] = move[j]
move[j] = temp
yield SwapXYZ(''.join(move))
SwapXYZ("ZYXZYX").solve()
# ['ZYXZYX', 'XYXZYZ', 'XXYZYZ', 'XXYYZZ']
</code></pre>