#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int goal[9] = { 1,2,3,8,0,4,7,6,5 };//goal为棋盘的目标布局
int intermediate[9];//中间过程棋盘
struct Board
{
int a[9];
int depth;
int fn;
int prenode; //前一次移动方式
};
struct LinkList
{
Board node;
LinkList *parent;
LinkList *pre;
LinkList *next;
LinkList *path; //专门记录路径
};
void SetBoard(int current[], int b[]);//更新纪录八数码的状态
int Weight(int a[]);
LinkList *NewNode(LinkList *nowmin, int depth, int direction);//生成一个新节点的函数
LinkList *AddNode(LinkList *Openhead, LinkList *node);
LinkList *MinNode(LinkList *Openhead);
int main()
{
int depth = 0;
//int initial[9] = {2, 8, 3, 1, 6, 4, 7, 0, 5};
int initial[9] = {2, 8, 3, 1, 0, 4, 7, 6, 5};
int i;
LinkList *Open = new LinkList;
LinkList *node = new LinkList;
//初始化
for (int i = 0;i <= 8;i++)
Open->node.a[initial[i]] = i;
Open-&
[人工智能]八数码(A*)
最新推荐文章于 2021-03-21 18:05:07 发布