八数码问题实验报告.docVIP

  • 60
  • 0
  • 约6.49千字
  • 约 8页
  • 2019-05-07 发布于江西
  • 举报
八数码问题实验报告 实验要求: 九宫重排问题: 在3×3的井子九宫格棋盘上摆有8个牌,分别标有1-8个数码。棋盘上尚有一个空格,允许其周围的将牌向空格移动。这个通过移动将牌就可以变换将牌布局。现给定如下两种布局,一种为初始状态,一种为目标状态,问如何移动将牌,以将初始状态变换为目标状态? 实验思路: A*算法 取g(n)=d(n),h(n)=w(n),其中w(n)表示以目标为基准,结点n的状态中不在位将牌的个数。由于从结点n转换成目标结点至少需要w(n)步,所以对任意n,恒有w(n) ≤h*(n)。 实验代码: #includeiostream #includestdio.h #includetime.h #includestdlib.h #includemath.h #define size 3 long total; typedef char board[size][size]; board target = {1,2,3,8,0,4,7,6,5}; // 目标状态 class Node{ public: board data; //存放状态 Node *parent; //存放父节点地址 Node *child[4]; //存放子节点地址,最多个 Node *next; int f,h,g,how; //how中记录了其父节点如何移动生成该节点 Node();

文档评论(0)

1亿VIP精品文档

相关文档