资源简介
八数码 深度优先算法具体要求大家都懂得...
代码片段和文件信息
#include
#include
#include
#include
#include
#define MAXDEEP 5
using namespace std;
struct state
{
int numfadeep;
int sta[9];
};
int st[9]={283104765};
int ta[9]={123804765};
stack open;
queue close;
void putopen(int st[])
{
int i;
state star;
star.fa=-1;//根节点的父节点没有,设置为-1,以表区别
star.num=1;//每个状态的标志
star.deep=0;//根节点深度为0
for(i=0;i<9;i++)
{
star.sta[i]=st[i];
}
open.push(star);
}
bool ablepush(state op)
{
state temp;
int ij;
stack cp1;
queue cp2;
while(!open.empty())
{
temp=open.top();
for(i=0;i<9;++i)
if(temp.sta[i]!=op.sta[i])
break;
if(i==8) return false;
open.pop();
cp1.push(temp);
}
while(!cp1.empty())
{
temp=cp1.top();
cp1.pop();
open.push(temp);
}
for(i=0;i {
temp=close.front();
close.pop();
cp2.push(temp);
close.push(temp);
}
while(!cp2.empty())
{
i++;
for(j=0;j<9;j++)
{
if(cp2.front().sta[j]!=op.sta[j])
{
cp2.pop();
break;
}
if(j==8) return false;
}
}
return true;
}
bool istarget(state t)
{
int i;
for(i=0;i<9;i++)
if(t.sta[i]!=ta[i])
return false;
return true;
}
int Move(state op)//op为close表中将进行上、下、左、右移动的状态
{
int izerodp;
int temp1temp2temp3temp4;
dp=op.deep+1;//进行MOVE函数则深度+1
for(i=0;i<9;++i)//找到0点
if(op.sta[i]==0)
{zero=i;break;}
if(zero!=0 && zero!=3 && zero!=6)//左移
{
state op1=op;
temp1=op1.sta[zero];
op1.sta[zero]=op1.sta[zero-1];
op1.sta[zero-1]=temp1;
if(ablepush(op1))
{
op1.deep=dp;
op1.fa=op.num;
open.push(op1);
if(istarget(op1))
return op1.fa;
}
}
if(zero!=0 && zero!=1 && zero!=2)//上移
{
state op2=op;
temp2=op2.sta[zero];
op2.sta[zero]=op2.sta[zero-3];
op2.sta[zero-3]=temp2;
- 上一篇:wxWidget多语言移植到MFC动态库DLL
- 下一篇:C++实现的旅行商问题
相关资源
- 八数码问题的八种实现方法
- 八数码问题数字华容道,九宫格深度
- 九宫格程序c++人工智能
- 遗传算法解八数码问题
- 八数码问题C++图形界面
- MFC实现迷宫搜索——Easy参考
- 图的邻接矩阵表示,深度优先遍历,
- A*算法求解八数码--演示程序MFC
- 八数码问题 队列式分支限界法
- 启发式搜索算法解决八数码问题(C语
- C语言解八数码问题
- 人工智能 A*算法 八数码问题 C++ 报告
- 人工智能 八数码问题 A*算法 C语言
- 八数码游戏程序人工智能,c++
- 从广度优先搜索深度优先搜索A*算法多
- 八数码问题C++代码
-
利用ja
vasc ript在网页实现八数码启 - 用C语言实现八数码问题的宽度优先搜
- A*算法解决八数码问题C++
- 求两点之间所有路径的C++代码
- 八数码问题A星算法实现
- 八数码的深度优先算法c++实现
- 八数码问题A算法解决
- 启发式搜索解决八数码问题
- 八数码宽度优先搜索加注释.txt
- 人工智能八数码问题 C++
- 八数码C语言实现包含实验报告
- 八数码问题算法 游戏源码
- 基于盲目搜索的宽度优先算法的八数
- 定义采用邻接矩阵存储的图结构封装
评论
共有 条评论