for i in range(0, len(array)): for j in range(i, len(array)): if array[i] > array[j]: reverseOrderNumber += 1 return reverseOrderNumber def isTransform(startNode, endNode): #用于判断问题是否可解,用到了getStatus函数 start = getStatus(startNode) end = getStatus(endNode) if start % 2 != end % 2: return False return True if __name__ == '__main__': #构建初始状态、目标状态 startNode = Node([[4, 8, 6], [3, 0, 7], [2, 1, 5]]) endNode = Node([[1, 2, 3], [4, 8, 5], [6, 7, 0]]) Astar = Algorithm.Astar(startNode, endNode) #将Astar初始化为Algorithm中的Astar类 #判断是否有解 if isTransform(startNode, endNode) and Astar.start(): #如果问题有解则展开A*搜索 Astar.showPath() #调用showMap函数,把路径显示出来 else: print("无解")
# for index in range(6,9): # li3.append(lio[index]) # lli.append(li1) # lli.append(li2) # lli.append(li3) # print(lli)#图片序列 lio 是初始列表,lio0是目的列表 # lli=[[1, 2, 3],[4, 5, 6],[7, 9, 0]] # lio4=[[1, 2, 3],[4, 5, 6],[7, 0, 9]] # lio = forceex(lio,swap1) # print(lio) myswap = [] lli, oper = randomstep(lio, stepnow) lli = getjuzhen(lli) startNode = Node(lli) endNode = Node(lio4) Astar = Algorithm.Astar(startNode, endNode) if isTransform(startNode, endNode) and Astar.start(): Astar.showPath() oper += Astar.showmotion() print(oper) print(myswap) # print(Astar.showPath().motion) else: lio = forceex(lio, swap1) print(lio) # print(lio) lli = getjuzhen(lio) startNode = Node(lli) endNode = Node(lio4) Astar = Algorithm.Astar(startNode, endNode) if isTransform(startNode, endNode) and Astar.start():