这两天学习了下Python这个脚本语言,语法简单且丰富。
尝试用Python写了个八数码问题的算法,很方便就写出来了。
使用广度优先算法,改进了下,搜索下一个节点时评估一下,这样速度会快很多。
# coding=utf-8
'''
Created on 2014年12月18日
@author: osborn
'''
#实现字符串任两个位置的字符交换
def switchchar(str, p1, p2):
left = p1
right = p2
if(p1 > p2):
left = p2
right = p1
elif(p1 == p2):
return str
lstr = ""
rstr = ""
mstr = ""
if(left == 0):
lstr = ""
else:
lstr = str[:left]
if(right == len(str) - 1):
rstr = ""
else:
rstr = str[right + 1:]
if((right - left) == 1):
mstr = ""
else:
mstr = str[left + 1: right]
return lstr + str[right] + mstr + str[left] + rstr
# 用对象表示状态点
class Sta