• 大小: 7.58KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: 其他
  • 标签: 其他  

资源简介


利用A*算法解决九宫格重排问题,可以当游戏玩~~

资源截图

代码片段和文件信息

#include 
#include  
#include 
#include
#include
#include 
#include
using namespace std;
string target=“123456780“;
string original=“123456708“;



class Node 
{
public:

string state;
int r;//1234代表上下左右
int gh;//代价;g代表执行的步数,h代表当前状态和目标状态不同数字的个数。
Node *family;//回溯用
int geth();
int getvalue();

Node()
{
family=NULL;
state=“102345687“;//如果初始化为NULL, if (*(pMatrix+i)!=*(target+i))会报错
       // h= geth();
r=0;
g=0;
h=0;

};
};

int Node::geth()//////////获得节点a的代价h
{
int k=0;
for(int i=0;i<9;++i)
{
for(int j=0;j<9;++j)
{
if(state[i]==‘0‘)
continue;
if (state[i]==target[j])
{
k+=abs(j/3-i/3)+abs(j%3-i%3);//////////////////////abs不要忘了,不然会相当慢
}
}
}

return k;
}
/*
int Node::geth()//////////获得节点a的代价h
{
int k=0;
for(int i=0;i<9;++i)
{
if (state[i]!=target[i])
{
k++;
}
}

return k;
}
*/
int Node::ge

评论

共有 条评论