?? 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 + -