亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mychessboard.cpp

?? 棋盤覆蓋問題的算法源程序
?? CPP
字號:
// MyChessBoard.cpp: implementation of the CMyChessBoard class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ChessBoard.h"
#include "MyChessBoard.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyChessBoard::CMyChessBoard()
{

}

CMyChessBoard::~CMyChessBoard()
{
	delete _p_Mem;
	delete _p_ChessBoard;
}

void CMyChessBoard::Init(void)
{
	
	int i;
	_p_Mem=new unsigned int [_i_BoardHeight*_i_BoardWidth];
	_p_ChessBoard=new unsigned int * [_i_BoardHeight];

	_p_ColorMem=new color [_i_BoardHeight*_i_BoardWidth];
	_p_ColorBoard=new color * [_i_BoardHeight];

	for (i=0;i<_i_BoardHeight;i++)
	{
		_p_ChessBoard[i]=&_p_Mem[i*_i_BoardWidth];
		_p_ColorBoard[i]=&_p_ColorMem[i*_i_BoardWidth];
	}
	//_p_ChessBoard[_i_PlacedX][_i_PlacedY]=0;
	
	memset(_p_Mem,0,_i_BoardHeight*_i_BoardWidth*(sizeof(int)/sizeof(char)));	   //0作為背景
	//for (i=0;i<=_i_BoardHeight-1;i++)
	//{
	//	for (j=0;j<=_i_BoardWidth-1;j++)
	//		TRACE("%d\t",_p_ChessBoard[i][j]);
	//	TRACE("\n");
	//}
	memset(_p_ColorMem,0,_i_BoardHeight*_i_BoardWidth*(sizeof(int)/sizeof(char)));//backColor作為背景
	//for (i=0;i<=_i_BoardHeight-1;i++)
	//{
	//	for (j=0;j<=_i_BoardWidth-1;j++)
	//		TRACE("%d\t",_p_ColorBoard[i][j]);
	//	TRACE("\n");
	//}
	_p_ColorBoard[_i_PlacedX][_i_PlacedY]=white;       //白色作為殘局的顏色
	title=1;//從數(shù)字1開始標注
	return;
}
/*
 *int tr:棋盤左上角的行號
 *int tc:棋盤左上角的列號
 *int dr:特殊方格的行號
 *int dc:特殊方格的列號
 *int size:棋盤的規(guī)格
 */
void CMyChessBoard::FillChessBoard(int tr,int tc,int dr,int dc,int size)
{
	if (size==1) return;

	int		t=title++;
	int		s=size/2;
	/********************************************************/
	//覆蓋左上角子棋盤
	if ((dr<tr+s) && (dc<tc+s))
	{   
		//特殊方格在此棋盤中
		FillChessBoard(tr,tc,dr,dc,s);
	}
	else
	{
		//特殊方格不在此棋盤中
		//用t號L型骨牌覆蓋右下角
		_p_ChessBoard[tr+s-1][tc+s-1]=t;
		//添顏色

		TRACE("%d\n",t);
		//覆蓋其余方格
		FillChessBoard(tr,tc,tr+s-1,tc+s-1,s);
	}

	/********************************************************/
	//覆蓋右上角子棋盤
	if ((dr<tr+s) && (dc>=tc+s))
	{   
		//特殊方格在此棋盤中
		FillChessBoard(tr,tc+s,dr,dc,s);
	}
	else
	{
		//特殊方格不在此棋盤中
		//用t號L型骨牌覆蓋左下角
		_p_ChessBoard[tr+s-1][tc+s]=t;
		TRACE("%d\n",t);
		//覆蓋其余方格
		FillChessBoard(tr,tc+s,tr+s-1,tc+s,s);
	}

	/********************************************************/
	//覆蓋左下角子棋盤
	if ((dr>=tr+s) && (dc<tc+s))
	{   
		//特殊方格在此棋盤中
		FillChessBoard(tr+s,tc,dr,dc,s);
	}
	else
	{
		//特殊方格不在此棋盤中
		//用t號L型骨牌覆蓋右上角
		_p_ChessBoard[tr+s][tc+s-1]=t;
		TRACE("%d\n",t);
		//覆蓋其余方格
		FillChessBoard(tr+s,tc,tr+s,tc+s-1,s);
	}

	/********************************************************/
	//覆蓋右下角子棋盤
	if ((dr>=tr+s) && (dc>=tc+s))
	{   
		//特殊方格在此棋盤中
		FillChessBoard(tr+s,tc+s,dr,dc,s);
	}
	else
	{
		//特殊方格不在此棋盤中
		//用t號L型骨牌覆蓋左上角
		_p_ChessBoard[tr+s][tc+s]=t;
		TRACE("%d\n",t);
		//覆蓋其余方格
		FillChessBoard(tr+s,tc+s,tr+s,tc+s,s);
	}
}
/*
        _______________________________________________
3  		|3  		4  		4  		8  		8  		9 |		9  
3  		|0  		2  		4  		8  		7  		7 |		9  
5  		|2  		2  		6  		10  	10  	7 |		11  
5  		|5  		6  		6  		1  		10  	11|  	11  
13  	|13		 	14  	1  		1  		18  	19|  	19  
13  	|12			14  	14  	18  	18  	17|  	19  
15  	|12			12  	16  	20  	17  	17|  	21  
		|  +---------------------------------------+  |
15  	|15|		16  	16  	20  	20	   |21|   	21  
        ~~~~									   ~~~~
框到的區(qū)域是需要著色的范圍
 */
void CMyChessBoard::SetColor(int i, int j)
{
	int Counter;
	color ColorID;      //選擇的本次添涂使用的顏色
	bool  ColorFlag[6]; //當前對應(yīng)骨牌周圍已經(jīng)使用過的顏色

	if (_p_ColorBoard[i][j]!=backColor)  return; //如果當前i,j點已經(jīng)被填色,則返回
	if ((i==_i_PlacedX)&&(j==_i_PlacedY)) return;  //當前是,殘局位置
	for (Counter=0;Counter<6;Counter++)  ColorFlag[Counter]=false;
	//測試i,j上面的方格
	Counter=1;
	if (i-1>=0) 
	{
		if (_p_ChessBoard[i-1][j]==_p_ChessBoard[i][j])//如果是需要涂顏色的
		{
			Counter++;
			//檢查該方格四周的顏色
			if (i-2>=0) //上方                                 
				ColorFlag[_p_ColorBoard[i-2][j]]=true;
			if (j-1>=0) //左面
				ColorFlag[_p_ColorBoard[i-1][j-1]]=true;
			if (j+1<_i_BoardWidth) //右面
				ColorFlag[_p_ColorBoard[i-1][j+1]]=true;
		}
		else
		{
			ColorFlag[_p_ColorBoard[i-1][j]]=true;
		}
	}
	//檢測i,j左面的方格
	if (j-1>=0)
	{
		if (_p_ChessBoard[i][j-1]==_p_ChessBoard[i][j])//如果是需要涂顏色的
		{
			Counter++;
			//檢查四周方格
			if (i-1>=0) //上方                                 
				ColorFlag[_p_ColorBoard[i-1][j-1]]=true;
			if (j-2>=0) //左面
				ColorFlag[_p_ColorBoard[i-0][j-2]]=true;
			if (i+1<_i_BoardHeight) //下面
				ColorFlag[_p_ColorBoard[i+1][j-1]]=true;
		}
		else
		{
			ColorFlag[_p_ColorBoard[i][j-1]]=true;
		}
	}
	//檢測i,j右面的方格
	if (j+1<_i_BoardWidth)
	{
		if (_p_ChessBoard[i][j+1]==_p_ChessBoard[i][j])//如果是需要涂顏色的
		{
			Counter++;
			//檢查四周方格
			if (i-1>=0) //上方                                 
				ColorFlag[_p_ColorBoard[i-1][j+1]]=true;
			if (j+2<_i_BoardWidth) //右面
				ColorFlag[_p_ColorBoard[i-0][j+2]]=true;
			if (i+1<_i_BoardHeight) //下面
				ColorFlag[_p_ColorBoard[i+1][j+1]]=true;
		}
		else
		{
			ColorFlag[_p_ColorBoard[i][j+1]]=true;
		}
	}
	//檢測i,j下面的方格
	if (i+1<_i_BoardHeight)
	{
		if (_p_ChessBoard[i+1][j]==_p_ChessBoard[i][j])//如果是需要涂顏色的
		{
			Counter++;
			//檢查四周方格
			if (j-1>=0) //左方                                 
				ColorFlag[_p_ColorBoard[i+1][j-1]]=true;
			if (j+1<_i_BoardWidth) //右面
				ColorFlag[_p_ColorBoard[i+1][j+1]]=true;
			if (i+2<_i_BoardHeight) //下面
				ColorFlag[_p_ColorBoard[i+2][j+0]]=true;
		}
		else
		{
			ColorFlag[_p_ColorBoard[i+1][j]]=true;
		}
	}

	if (Counter==3) //如果當前檢查的方格中有一個棋盤
	{
		//得到當前合適的顏色
		for (int Count=2;Count<6;Count++)
			if (ColorFlag[Count]==false)	
			{
				ColorID=(color)Count;
				break;
			}
		_p_ColorBoard[i][j]=ColorID;
		if (j-1>=0)					//左面
			if (_p_ChessBoard[i+0][j-1]==_p_ChessBoard[i][j]) _p_ColorBoard[i+0][j-1]=ColorID;
		if (j+1<_i_BoardWidth)		//右面
			if (_p_ChessBoard[i+0][j+1]==_p_ChessBoard[i][j]) _p_ColorBoard[i+0][j+1]=ColorID;
		if (i-1>=0)					//上面
			if (_p_ChessBoard[i-1][j+0]==_p_ChessBoard[i][j]) _p_ColorBoard[i-1][j+0]=ColorID;
		if (i+1<_i_BoardHeight)		//下面
			if (_p_ChessBoard[i+1][j+0]==_p_ChessBoard[i][j]) _p_ColorBoard[i+1][j+0]=ColorID;
	}
}
void CMyChessBoard::FillColour()
{
	//
	int			i,j;
	for (i=0;i<=_i_BoardHeight-1;i++)
	{
		for (j=0;j<=_i_BoardWidth-1;j++)
			if  (_p_ColorBoard[i][j]==backColor)  //如果當前還沒有填色
			{
					//if ((i==1)&&(j==5))
					SetColor(i,j);
					//else
					//	SetColor(i,j);
					/*
					#ifdef _DEBUG
					int Col,Row;
					for (Row=0;Row<_i_BoardHeight;Row++)
					{
						for (Col=0;Col<_i_BoardWidth;Col++)
							TRACE("%d\t",_p_ColorBoard[Row][Col]);
						TRACE("\n");
					}
					TRACE("----------------------------------------------\n");
					#endif
					*/
			}
	}
}
void CMyChessBoard::Run()
{
	FillChessBoard(0,0,_i_PlacedX,_i_PlacedY,_i_BoardHeight);
#ifdef _DEBUG
	int i,j;
	for (i=0;i<_i_BoardHeight;i++)
	{
		for (j=0;j<_i_BoardWidth;j++)
			TRACE("%d\t",_p_ChessBoard[i][j]);
		TRACE("\n");
	}
	TRACE("----------------------------------------------\n");
#endif
	FillColour();
#ifdef _DEBUG
	for (i=0;i<_i_BoardHeight;i++)
	{
		for (j=0;j<_i_BoardWidth;j++)
			TRACE("%d\t",_p_ColorBoard[i][j]);
		TRACE("\n");
	}
#endif
	return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本欧美在线观看| 粉嫩av亚洲一区二区图片| 久久精品国产99国产精品| 成人永久aaa| 日韩精品影音先锋| 一区二区三区四区在线播放 | 1区2区3区国产精品| 午夜精品免费在线| 99久久精品国产麻豆演员表| 91精品国产aⅴ一区二区| 综合色天天鬼久久鬼色| 色婷婷久久一区二区三区麻豆| 成人免费一区二区三区在线观看| 国产丝袜欧美中文另类| 99久久婷婷国产综合精品| 一区二区三区四区五区视频在线观看| 久久久99久久| 黄一区二区三区| 亚洲在线观看免费| 中文字幕永久在线不卡| 欧美精品 日韩| 欧美日韩1区2区| 成人av动漫在线| 精品sm捆绑视频| 免费的国产精品| 51午夜精品国产| 日本欧美加勒比视频| 色噜噜狠狠色综合中国| 日韩码欧中文字| caoporm超碰国产精品| 欧美高清一级片在线观看| 国产一区二区主播在线| 日韩精品一区二区在线观看| 日本vs亚洲vs韩国一区三区| 欧美精品一二三区| 全部av―极品视觉盛宴亚洲| 欧美一区二区三区成人| 日本91福利区| 欧美变态口味重另类| 激情六月婷婷久久| 欧美经典一区二区| 99re这里都是精品| 一区二区三区**美女毛片| 欧美伊人精品成人久久综合97| 亚洲靠逼com| 4hu四虎永久在线影院成人| 久久国产精品区| 久久久国产精品麻豆| 不卡的电影网站| 亚洲自拍都市欧美小说| 在线播放91灌醉迷j高跟美女| 日日摸夜夜添夜夜添国产精品| 欧美大胆人体bbbb| 成人动漫av在线| 亚洲永久免费视频| 日韩欧美国产一区二区三区 | 久久综合狠狠综合久久综合88| 精品一区二区国语对白| 久久精品一区二区三区不卡牛牛| 高清不卡一区二区在线| 亚洲动漫第一页| 亚洲精品一区二区三区蜜桃下载| 成人午夜精品一区二区三区| 亚洲一区在线观看视频| 日韩精品一区二区三区中文不卡 | 日韩精品一区第一页| 26uuu成人网一区二区三区| 精品美女在线播放| 亚洲欧美日韩国产一区二区三区| 欧美系列一区二区| 国产亚洲综合在线| 麻豆精品一二三| 777亚洲妇女| 亚洲gay无套男同| 国产综合色视频| 欧美一区二区三区免费大片 | 国产黄色精品视频| 午夜精品久久久久久久蜜桃app| 精品粉嫩aⅴ一区二区三区四区| 粉嫩av一区二区三区| 婷婷一区二区三区| 中文一区二区完整视频在线观看 | 日韩欧美色电影| 91视频免费播放| 国产酒店精品激情| 日韩精品一二区| 亚洲精品大片www| 日本一区二区电影| 精品久久久久久无| 欧美日韩精品二区第二页| 99久久久国产精品免费蜜臀| 久久精品国产亚洲高清剧情介绍| 亚洲福利一区二区| 亚洲欧美日韩国产一区二区三区| 国产视频亚洲色图| 欧美xingq一区二区| 欧美伊人久久大香线蕉综合69 | 精品一区二区在线看| 亚洲尤物在线视频观看| 亚洲色图欧美偷拍| 国产精品无码永久免费888| 久久久久国产成人精品亚洲午夜| 91精品国产欧美一区二区成人| 日本精品视频一区二区| 色综合久久综合中文综合网| 成人动漫中文字幕| 成人精品亚洲人成在线| 国产一区二区看久久| 国产一区在线看| 国产精品69毛片高清亚洲| 韩国女主播一区二区三区| 久久国产剧场电影| 精品一区二区三区久久| 裸体一区二区三区| 精品一区二区影视| 久久国产视频网| 国产综合成人久久大片91| 久久爱www久久做| 国产一区二区福利| 成人免费视频国产在线观看| 丁香婷婷深情五月亚洲| k8久久久一区二区三区| 99视频一区二区| 在线视频你懂得一区| 欧美日韩视频一区二区| 欧美精品日日鲁夜夜添| 国产一区二区三区在线看麻豆| 午夜精品久久久久久不卡8050| 亚洲一区二区欧美| 激情欧美一区二区| 美日韩黄色大片| 琪琪一区二区三区| 奇米综合一区二区三区精品视频| 尤物在线观看一区| 亚洲韩国一区二区三区| 一区二区成人在线| 午夜成人免费电影| 久久99精品久久久久久动态图| 亚洲小少妇裸体bbw| 亚洲电影你懂得| 欧美日本一道本在线视频| 日韩女优电影在线观看| 国产日韩欧美高清在线| 中文字幕一区二区三区精华液| 亚洲人成7777| 五月婷婷久久综合| 粉嫩av一区二区三区在线播放| 色天使色偷偷av一区二区| 日韩欧美在线影院| 国产精品麻豆久久久| 亚洲国产精品麻豆| 久久se这里有精品| 色婷婷综合久久久中文字幕| 日韩视频在线一区二区| 中文字幕在线观看不卡视频| 亚洲宅男天堂在线观看无病毒| 精品一区二区三区欧美| 色香蕉久久蜜桃| 26uuu亚洲综合色欧美| 一区二区三区在线视频免费| 免费xxxx性欧美18vr| 91原创在线视频| 精品日韩欧美一区二区| 亚洲高清视频的网址| 国产成人精品aa毛片| 欧美一二三区精品| 亚洲一区二区三区在线播放 | 亚洲色大成网站www久久九九| 首页综合国产亚洲丝袜| 成人激情校园春色| 欧美成人一级视频| 亚洲444eee在线观看| 99精品一区二区三区| 久久久www成人免费无遮挡大片| 五月婷婷色综合| 在线观看视频一区二区 | 高潮精品一区videoshd| 欧美一区二区视频在线观看| 亚洲精品中文在线| 成人在线视频首页| 国产人成一区二区三区影院| 久久99精品久久久久久国产越南 | 国产一区二区三区免费观看| 欧美最新大片在线看| 国产精品黄色在线观看| 狠狠色综合日日| 精品国产网站在线观看| 日韩在线a电影| 欧美日韩一区国产| 亚洲综合偷拍欧美一区色| 99re视频精品| 成人免费一区二区三区在线观看| 国产成人精品三级麻豆| 久久精品这里都是精品| 国产一区二区三区| 国产欧美日韩另类一区| 国产一区二区在线观看免费| 日韩欧美成人激情| 青青草成人在线观看| 日韩亚洲欧美成人一区|