资源简介
启发式搜索解决九宫格算法,C++,A算法人工智能
代码片段和文件信息
// EX_01.cpp : 定义控制台应用程序的入口点。
//
/*
========================================================================================*
** EX_01_启发式搜索 *
**实验目的:利用A算法解决九宫格问题。
**
**
**
**Version 1.0
**======================================================================================*
*/
#include “stdafx.h“
#include
#include
#include
#include
#include
using namespace std;
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;
}
int get_nipn(void)
{
return not_in_position_num;
}
int get_deapth(void)
{
return deapth;
}
int get_evafun(void)
{
return eva_function;
}
//函数
void cul_para(void);
void set_num(int other_num[9]);
void show(void);
void get_numbers_to(int other_num[9]);
//操作符定义
eight_num& operator=(eight_num&);
eight_num& operator=(int other_num[9]);
int operator==(eight_num&);
int operator==(int other_num[9]);
};
//计算启发函数f(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=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 45056 2011-10-12 21:43 EX_01\Debug\EX_01.exe
文件 501468 2011-10-12 21:43 EX_01\Debug\EX_01.ilk
文件 691200 2011-10-12 21:43 EX_01\Debug\EX_01.pdb
文件 1630 2011-10-12 21:43 EX_01\EX_01\Debug\cl.command.1.tlog
文件 20870 2011-10-12 21:43 EX_01\EX_01\Debug\CL.read.1.tlog
文件 1728 2011-10-12 21:43 EX_01\EX_01\Debug\CL.write.1.tlog
文件 406 2011-10-11 22:47 EX_01\EX_01\Debug\EX_01.exe.em
文件 472 2011-10-11 22:47 EX_01\EX_01\Debug\EX_01.exe.em
文件 381 2011-10-12 21:43 EX_01\EX_01\Debug\EX_01.exe.intermediate.manifest
文件 146 2011-10-12 21:43 EX_01\EX_01\Debug\EX_01.lastbuildstate
文件 2652 2011-10-12 21:43 EX_01\EX_01\Debug\EX_01.log
文件 68893 2011-10-12 21:43 EX_01\EX_01\Debug\EX_01.obj
文件 200 2011-10-11 22:47 EX_01\EX_01\Debug\EX_01_manifest.rc
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
文件 2 2011-10-12 21:43 EX_01\EX_01\Debug\li
............此处省略34个文件信息
相关资源
- NCC和SSDA算法的图像匹配实现
- RSA算法加密MFC实现
- 八数码问题C++图形界面
- C++实现的人脸识别系统
- Othello黑白棋游戏与AI
- 人工智能的贪食蛇
- C语言实现最短路径规划
- Alpha-Beta剪枝算法一字棋源码及实验报
- ISODATA算法
- PCA算法C语言描述
- VC2008 MFC 五子棋 源码 人机对弈 游戏
- 人工智能 A*算法 八数码问题 C++ 报告
- RSA(C++)代码实现全
- dijkstra算法C++实现
- 邮票问题C语言源码
- DAA算法 VC++实现 画线
- RSA算法C语言程序
- 人工智能——水壶问题
- TDMA算法 C语言编写
- 人工智能之动物识别C语言
- c语言RSA算法 这是一个完整的rsa算法
- 数据结构作业 dijkstra算法应用 C++
- 人工智能,五子棋,人工智能,代码
- mfc图形界面校园导航系统
- 人工智能 八数码问题 A*算法 C语言
- RSA算法1024位C语言实现
- 八数码游戏程序人工智能,c++
- 从广度优先搜索深度优先搜索A*算法多
- 单片机TEA算法加密程序
- VC++ 使用RSA算法防止非法注册机破解软
评论
共有 条评论