• 大小: 262KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: C/C++
  • 标签: 人工智能  A算法  

资源简介

人工智能 A算法解决八数码问题 VC++实现,通过输入初始数据能得出目标数据以及路径数和时间。

资源截图

代码片段和文件信息

#include “iostream.h“
#include 
#include 
#include 
#include 
static int target[9]={123804765};
//class definition
class eight_num
{
private:
int num[9];
int not_in_position_num;
int deapth;
int eva_function;
public:
eight_num* parent;
eight_num* leaf_next;
eight_num* leaf_pre;
    eight_num(int init_num[9]);
eight_num(int num1int num2int num3int num4int num5int num6int num7int num8int num9)
{
num[0]=num1;
num[1]=num2;
num[2]=num3;
num[3]=num4;
num[4]=num5;
num[5]=num6;
num[6]=num7;
num[7]=num8;
num[8]=num9;
}
eight_num(void)
{
for (int i=0;i<9;i++)
num[i]=i;
}
   void cul_para(void);
   void get_numbers_to(int other_num[9]);
int get_nipn(void)
{return not_in_position_num;}
int get_deapth(void)
{return deapth;}
int get_evafun(void)
{return eva_function;}
void set_num(int other_num[9]);
    void show(void);
eight_num& operator=(eight_num&);
eight_num& operator=(int other_num[9]);
int operator==(eight_num&);
int operator==(int other_num[9]);
};
//计算启发函数g(n)的值
void eight_num::cul_para(void)
{
int i;
int temp_nipn=0;
for (i=0;i<9;i++)
if (num[i]!=target[i])
temp_nipn++;
not_in_position_num=temp_nipn;
if (this->parent==NULL)
deapth=0;
else
deapth=this->parent->deapth+1;
eva_function=not_in_position_num+deapth;
}
//构造函数1
eight_num::eight_num(int init_num[9])
{
for (int i=0;i<9;i++)
num[i]=init_num[i];
}

//显示当前节点的状态
void eight_num::show()
{
cout< cout<<“ “;
cout< cout<<“ “;
cout< cout<<“\n“;
cout< cout<<“ “;
cout< cout<<“ “;
cout< cout<<“\n“;
cout< cout<<“ “;
cout< cout<<“ “;
cout< cout<<“\n“;
}
//复制当前节点状态到一个另数组中
void eight_num::get_numbers_to(int other_num[9])
{
for (int i=0;i<9;i++)
other_num[i]=num[i];
}
//设置当前节点状态(欲设置的状态记录的other数组中)
void eight_num::set_num(int other_num[9])
{
for (int i=0;i<9;i++)
num[i]=other_num[i];
}

eight_num& eight_num::operator=(eight_num& another_8num)
{
for (int i=0;i<9;i++)
num[i]=another_8num.num[i];
not_in_position_num=another_8num.not_in_position_num;
deapth=another_8num.deapth+1;
eva_function=not_in_position_num+deapth;
return *this;
}
eight_num& eight_num::operator=(int other_num[9])
{
for (int i=0;i<9;i++)
num[i]=other_num[i];
return *this;
}
int eight_num::operator==(eight_num& another_8num)
{
int match=1;
for (int i=0;i<9;i++)
if(num[i]!=another_8num.num[i])
{
match=0;
break;
}
if (match==0)
return 0;
else 
return 1;
}
int eight_num::operator==(int other_num[9])
{
int match=1;
for (int i=0;i<9;i++)
if(num[i]!=other_num[i])
{
match=0;
break;
}
if (match==0)
return 0;
else 
return 1;
}
//class definition over
//空格向上移
int move_up(int num[9])
{
for (int i=0;i<9;i++)
if (num[i]==0)
break;
if (i<3)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7432  2012-05-27 18:09  基于A算法八数码问题程序代码\bashuma.cpp

     文件       3413  2012-05-27 18:10  基于A算法八数码问题程序代码\bashuma.dsp

     文件        522  2012-05-27 18:11  基于A算法八数码问题程序代码\bashuma.dsw

     文件      50176  2012-05-27 18:11  基于A算法八数码问题程序代码\bashuma.ncb

     文件      48640  2012-05-27 18:11  基于A算法八数码问题程序代码\bashuma.opt

     文件       1144  2012-05-27 18:10  基于A算法八数码问题程序代码\bashuma.plg

     文件     233509  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug\bashuma.exe

     文件     268900  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug\bashuma.ilk

     文件      22529  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug\bashuma.obj

     文件     268540  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug\bashuma.pch

     文件     558080  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug\bashuma.pdb

     文件      50176  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug\vc60.idb

     文件      61440  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug\vc60.pdb

     目录          0  2012-05-27 18:10  基于A算法八数码问题程序代码\Debug

     目录          0  2012-05-27 18:11  基于A算法八数码问题程序代码

----------- ---------  ---------- -----  ----

              1574501                    15


评论

共有 条评论