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

📄 evaluation.cpp

📁 人工智能上机实验题目:自动求解八数码难题。 八数码难题:在3×3的方格棋盘上
💻 CPP
字号:
// Evaluation.cpp: implementation of the CEvaluation class.
//
//////////////////////////////////////////////////////////////////////


#include "Evaluation.h"
#include <math.h>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CEvaluation::CEvaluation()
{

}

CEvaluation::~CEvaluation()
{

}

//原来的评价函数 ,不在位的数码个数
/*
int CEvaluation::Evaluate(BYTE byBoard[][3])
{
	int iCount=0;
	int i;

	for(i=0;i<3;i++)
		if(byBoard[0][i]!=i+1)
			iCount++;

 	for(i=0;i<3;i++)
		if(byBoard[2][i]!=7-i)
			iCount++;

	iCount+=!(byBoard[1][0]==8)+!(byBoard[1][1]==0)+!(byBoard[1][2]==4);

	return iCount;
}
*/

//新的评价函数,不在位的数码距离正确位置的距离
int CEvaluation::Evaluate(BYTE byBoard[][3])
{
	BYTE destBoard[3][3] = { {1,2,3}, {8,0,4}, {7,6,5} };
	int iDist = 0;
	int i_1, j_1, i_2, j_2;
	BYTE num;
	for( num = 0; num <= 8; num ++ )
	{
		GetNumPos(byBoard, i_1, j_1, num);
		GetNumPos(destBoard, i_2, j_2, num);
		iDist += abs(i_1 - i_2) + abs(j_1 - j_2);
	}
	return iDist;
}

void CEvaluation::GetNumPos(BYTE byBoard[][3], int &i, int &j, BYTE num)
{
	for( i = 0; i < 3; i ++ )
		for( j = 0; j < 3; j ++ )
			if( byBoard[i][j] == num )
				return;
}

⌨️ 快捷键说明

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