📄 evaluation.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 + -