⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eightnum.cpp

📁 人工智能上机实验题目:自动求解八数码难题。 八数码难题:在3×3的方格棋盘上
💻 CPP
字号:
#include ".\eightnum.h"

CEightNum::CEightNum(void)
{

}

CEightNum::~CEightNum(void)
{
}
void CEightNum::SetDefaultInitState()
{
	m_byBoard[0][0]=2;
	m_byBoard[0][1]=8;
	m_byBoard[0][2]=3;

	m_byBoard[1][0]=1;
	m_byBoard[1][1]=6;
	m_byBoard[1][2]=4;

	m_byBoard[2][0]=7;
	m_byBoard[2][1]=0;
	m_byBoard[2][2]=5;
	//for test
	PrintState(m_byBoard);
}
void CEightNum::GetSpacePos(int& x,int& y)
{
	for(x=0;x<3;x++)
		for(y=0;y<3;y++)
			if(m_byBoard[x][y]==0)
				return;
}
void CEightNum::PrintState(BYTE byBoard[][3])
{
	int i,j;
	for(i=0;i<3;i++)
	{
		cout<<"     ";
		for(j=0;j<3;j++)
		{
            cout<<byBoard[i][j]<<"   ";
		}
		cout<<endl;
	}
	cout<<endl;
}
void CEightNum::AutoSolve() 
{ 
	m_pSearchEngine=new CGSESearchEngine;
	m_pSearchEngine->SearchAGoodMove(m_byBoard);
	while(!m_pSearchEngine->m_stackBestMove.empty())
	{
		PrintState(m_pSearchEngine->m_stackBestMove.top().byBoard);
		m_pSearchEngine->m_stackBestMove.pop();

		if(!m_pSearchEngine->m_stackBestMove.empty())
		{

			cout<<"press enter to continue the next step:"<<endl;
			getchar();
		}
		else
		{
			cout<<"You've have the solution!"<<endl;
		}
	}


}



void CEightNum::CreateRandomInitState() 
{
	// TODO: Add your control notification handler code here
	int i,j,k=0;
	BYTE a[9];

	srand((unsigned)time(NULL));
	for(i=0;i<9;i++)
	{
		a[i]=rand()%9;
		do					
		a[i]=rand()%9;
		while(IsIn(a,i));
	}

	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
		{
			m_byBoard[i][j]=a[k];
			k++;
		}
		PrintState(m_byBoard);
}

bool CEightNum::IsIn(BYTE a[],int i)
{
	for(int j=0;j<i;j++)
		if(a[j]==a[i])
			return 1;

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -