資源簡介
人工智能 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
- 上一篇:MFC 自定義 MessageBox
- 下一篇:戰爭模擬器C語言
評論
共有 條評論