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

📄 eveluation2.cpp

📁 八数码难题用vc++编写
💻 CPP
字号:
// Eveluation2.cpp: implementation of the CEveluation2 class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "eightnum.h"
#include "Eveluation2.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

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

CEveluation2::CEveluation2()
{

}

CEveluation2::~CEveluation2()
{

}

int CEveluation2::Eveluate(BYTE byBoard[][3])
{
	int iScore=0;
	int iTotalDist=0;
	int iSeqScore=0;
	int i,j;

	//计算totdist
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			switch(byBoard[i][j])
			{
			case 0:
				iScore+=abs(i-1)+abs(j-1);
				break;

			case 1:
				iScore+=i+j;
				break;

			case 2:
				iScore+=i+abs(j-1);
				break;

			case 3:
				iScore+=i+abs(j-2);
				break;

			case 4:
				iScore+=abs(i-1)+abs(j-2);
				break;

			case 5:
				iScore+=abs(i-2)+abs(j-2);
				break;

			case 6:
				iScore+=abs(i-2)+abs(j-1);
				break;

			case 7:
				iScore+=abs(i-2)+j;
				break;

			case 8:
				iScore+=abs(i-1)+j;
				break;
			}

	//计算seq
	if(byBoard[0][0]!=8)
	{
		if(byBoard[0][1]-byBoard[0][0]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][1]-byBoard[0][0]!=-7)
			iScore+=2;

	if(byBoard[0][1]!=8)
	{
		if(byBoard[0][2]-byBoard[0][1]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][2]-byBoard[0][1]!=-7)
			iScore+=2;

	if(byBoard[0][2]!=8)
	{
		if(byBoard[1][2]-byBoard[0][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[1][2]-byBoard[0][2]!=-7)
			iScore+=2;

	if(byBoard[1][2]!=8)
	{
		if(byBoard[2][2]-byBoard[1][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[2][2]-byBoard[1][2]!=-7)
			iScore+=2;

	if(byBoard[2][2]!=8)
	{
		if(byBoard[1][2]-byBoard[2][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[1][2]-byBoard[2][2]!=-7)
			iScore+=2;

	if(byBoard[1][2]!=8)
	{
		if(byBoard[0][2]-byBoard[1][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][2]-byBoard[1][2]!=-7)
			iScore+=2;

	if(byBoard[0][2]!=8)
	{
		if(byBoard[0][1]-byBoard[0][2]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][1]-byBoard[0][2]!=-7)
			iScore+=2;

	if(byBoard[0][1]!=8)
	{
		if(byBoard[0][0]-byBoard[0][1]!=1)
			iScore+=2;
	}
	else
		if(byBoard[0][0]-byBoard[0][1]!=-7)
			iScore+=2;

	return iScore;
}

⌨️ 快捷键说明

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