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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cqueen.cpp

?? 解國際象棋的N皇后問題的C++源代碼
?? CPP
字號:
#include "stdafx.h"
#include "cqueen.h"
Cqueen::Cqueen(int row)
{
	m_bruning=false;
	m_pisaveqplace=NULL;
	m_pgridbitmap=NULL;//柵欄位圖
	m_pplacelist=NULL;
	setrow(row);
	m_inowcol=0;
}
Cqueen::Cqueen()
{
	m_bruning=false;
	m_pisaveqplace=NULL;
	m_pplacelist=NULL;
	setrow(0);
}
Cqueen::~Cqueen()
{
	if(m_pisaveqplace!=NULL)
		delete m_pisaveqplace;
	if(m_pgridbitmap!=NULL)
		delete m_pgridbitmap;
	freelist();
}
CSize Cqueen::getqueengridsize()//獲取棋盤柵欄的尺寸
{
	return m_sizeview;
}
int Cqueen::getqueenplace(int row)//獲取皇后所在的排號
{
	int ret=-1;
	if(row<m_icount&&row>=0)
		ret=m_pisaveqplace[row];//取得保存起來的皇后的位置
	return ret;
}
void Cqueen::setrow(int row)//設置皇后棋盤的排數
{
	if(m_bruning)//???
	{
		return;
	}
	m_icount=row;
	m_sizeview.cx=m_icount*40;//1
	m_sizeview.cy=m_icount*40;//2這兩個都是用來設置棋盤的大小的
	if(row==0||m_bruning)
		return;
	if(m_pgridbitmap!=NULL)
	{
		delete m_pgridbitmap;
	}
//繪制操作涉及三類對象,一類是輸出對象包括CDC及其派生類,一類是繪制工具對象文本圖形對象,CFont,CBrush,CPen等,一類是屬于基本數據類型,如CPoint,CSize,CRect等
	m_pgridbitmap=new CBitmap();//位圖是一種位矩陣,每一個顯示象素都對應于其中的一個或多個位。可以利用位圖來表示圖像,也可以利用它來創建刷子。
	CDC *pDC=CDC::FromHandle(::GetDC(NULL));//返回設備環境類對象的指針
	CDC memdc;
	memdc.CreateCompatibleDC(pDC);
	CRect rect(0,0,m_sizeview.cx,m_sizeview.cy);
	m_pgridbitmap->CreateCompatibleBitmap(pDC,m_sizeview.cx,m_sizeview.cy);
    CBitmap *oldbmp=memdc.SelectObject(m_pgridbitmap);
	//CBrush brush(RGB(255,255,0));//改變棋盤的背景色,刷子定義了一種位圖形式的像素,利用它可以對區域內部填充顏色。
	//memdc.FillRect(rect,&brush);
	//CBrush brushblue(RGB(0,255,255));//2改變棋盤的顏色,創建了一個顏色刷子。
	for(int i=0;i<m_icount;i++)//根據棋盤的大小,劃出棋盤
	{
		//rect.SetRect(0,0,40,40);//確定棋盤的大小為(左上角坐標,左下角)
		//rect.OffsetRect(0,i*40);//確定移動量(左右,上下)
		for(int j=0;j<m_icount;j++)
		{
			//if(((j+i)%2))
			//	memdc.FillRect(rect,&brushblue);//用2的顏色填充矩形
			//rect.OffsetRect(40,0);
			memdc.FillSolidRect(j*40,i*40,40,40,RGB(68, 71, 140));
			memdc.Draw3dRect(j*40,i*40,40,40,RGB(0,0,225),RGB(225,225,0));
		}
	}
	memdc.SelectObject(oldbmp);
	::ReleaseDC(NULL,pDC->GetSafeHdc());
	if(m_pisaveqplace!=NULL)
		delete m_pisaveqplace;
	m_pisaveqplace=new int [m_icount];
	for(int j=0;j<m_icount;j++)
	{
		m_pisaveqplace[j]=-1;
	}
	freelist();
	m_pplacelist=new placelist[10];
	m_ilistmaxsize=10;
	m_ilistnowsize=0;
	m_idrawindex=-1;
}
void Cqueen::computqueenplace(int column,CView *view)
{
	int row=0;
	int i;
	int col;
	m_inowcol=column;
	if(column==m_icount)
	{
		addplace(m_pisaveqplace);
		m_bruning=false;
		return;
	}
	m_bruning=true;
	int *iplaceover=new int [m_icount];
	for(i=0;i<m_icount;i++)
	{
		iplaceover[i]=true;
	}
	for(i=0;i<column;i++)
	{
		col=m_pisaveqplace[i];
		if((col-(column-i))>=0)
		{
			iplaceover[col-(column-i)]=false;
		}
		if((col+(column-i))<m_icount)
		{
			iplaceover[col+(column-i)]=false;
		}
		iplaceover[col]=false;
	}
	for(i=0;i<m_icount;i++)
	{
		if(iplaceover[i])
		{
			m_pisaveqplace[column]=i;
			if(view!=NULL&&m_idrawindex==-1)
			{
				CDC *pDC=view->GetDC();
				drawqueenn(pDC);
				view->ReleaseDC(pDC);
				Sleep(20);
			}
			computqueenplace(column+1,view);
		}
	}
	m_bruning=false;
	delete[] iplaceover;
	m_inowcol=0;
}
void Cqueen::drawqueenn(CDC *pDC)//畫出皇后
{
	CBitmap bitmap;
	CDC memdc;
	memdc.CreateCompatibleDC(pDC);
	bitmap.CreateCompatibleBitmap(pDC,m_sizeview.cx,m_sizeview.cy);
	CBitmap *oldbmp=memdc.SelectObject(&bitmap);
	drawgrid(&memdc);
	drawqueen(&memdc);
	pDC->BitBlt(0,0,m_sizeview.cx,m_sizeview.cy,&memdc,0,0,SRCCOPY);
	memdc.SelectObject(oldbmp);
}
void Cqueen::drawgrid(CDC *pDC)
{
	if(m_pgridbitmap!=NULL)
	{
		CDC memdc;
		memdc.CreateCompatibleDC(pDC);
		CBitmap *oldbitmap=memdc.SelectObject(m_pgridbitmap);
		pDC->BitBlt(0,0,m_sizeview.cx,m_sizeview.cy,&memdc,0,0,SRCCOPY);
		memdc.SelectObject(oldbitmap);
	}
}
void Cqueen::drawqueen(CDC *pDC)//畫出棋盤上的皇后
{
	CBrush brush(RGB(255,123,200));//給皇后填充的顏色
	CRect rect;//畫皇后的區域大小
	CBrush *oldbrush=pDC->SelectObject(&brush);
	for(int i=0;i<=m_icount;i++)
	{
		rect.SetRect(0,0,40,40);//畫皇后的大小
		if(m_idrawindex>-1)//瀏覽畫出的皇后時有用
			rect.OffsetRect(m_pplacelist[m_idrawindex].place[i]*40,i*40);
		else
			rect.OffsetRect(m_pisaveqplace[i]*40,i*40);
		pDC->Rectangle(rect);//確定皇后的形狀
	}
	pDC->SelectObject(oldbrush);
}
void Cqueen::addplace(int *place)
{
	if(m_ilistnowsize==m_ilistmaxsize)
	{
		m_ilistmaxsize+=10;
		placelist *temlist=new placelist[m_ilistmaxsize];
		for(int i=0;i<m_ilistnowsize;i++)
		{
			temlist[i].place=m_pplacelist[i].place;
		}
		delete[] m_pplacelist;
		m_pplacelist=temlist;
	}
	int *iplace=new int[m_icount];
	for(int i=0;i<m_icount;i++)
	{
		iplace[i]=place[i];
	}
	m_pplacelist[m_ilistnowsize++].place=iplace;
}
void Cqueen::freelist()
{
	for(int i=0;i<m_ilistnowsize;i++)
	{
		if(m_pplacelist[i].place!=NULL)
		{
			delete[] m_pplacelist[i].place;
		}
	}
	if(m_pplacelist)
	{
		delete[] m_pplacelist;
	}
	m_ilistmaxsize=10;
	m_ilistnowsize=0;
}
void Cqueen::drawlist(int index)
{
	if(index<m_ilistnowsize)
	{
		m_idrawindex=index;
	}
	else
	{
		m_idrawindex=-1;
	}
}
int Cqueen::getlistsize()
{
	return m_ilistnowsize;
}
int Cqueen::getdrawindex()
{
	return m_idrawindex;
}
void Cqueen::savetobmpfile()
{
	CString name;
	CFileDialog fdlg(false,NULL,NULL,OFN_HIDEREADONLY,"bmp file(*.bmp)|*.bmp||");
	if(fdlg.DoModal()==IDOK)
	{
		name=fdlg.GetPathName();
		CString tem;
		tem=name.Right(name.GetLength()-name.ReverseFind('.'));
		tem.MakeLower();
		if(tem!=".bmp")
		{
			name+=".bmp";
		}
	}
	else
	{
		return;
	}
	CDC *pDC=CDC::FromHandle(::GetDC(NULL));
	CBitmap bm;
	bm.CreateCompatibleBitmap(pDC,m_sizeview.cx,m_sizeview.cy);
	CDC tdc;
	tdc.CreateCompatibleDC(pDC);
	CBitmap *pold=tdc.SelectObject(&bm);
	drawqueenn(&tdc);
	tdc.SelectObject(pold);
	BITMAP btm;
	bm.GetBitmap(&btm);
	DWORD size=btm.bmWidthBytes*btm.bmHeight;
	LPSTR lpdata=(LPSTR)::GlobalAlloc(GPTR,size);
	BITMAPINFOHEADER bih;
	bih.biBitCount=btm.bmBitsPixel;
	bih.biClrImportant=0;
	bih.biClrUsed=0;
	bih.biCompression=0;
	bih.biHeight=btm.bmHeight;
	bih.biPlanes=1;
	bih.biSize=sizeof(BITMAPINFOHEADER);
	bih.biSizeImage=size;
	bih.biWidth=btm.bmWidth;
	bih.biXPelsPerMeter=0;
	bih.biYPelsPerMeter=0;
	GetDIBits(pDC->GetSafeHdc(),bm,0,bih.biHeight,lpdata,(BITMAPINFO *)&bih,DIB_RGB_COLORS);
	BITMAPFILEHEADER bfh;
	bfh.bfReserved1=bfh.bfReserved2=0;
	bfh.bfType=((WORD)('M'<<8)|'B');
	bfh.bfSize=54+size;
	bfh.bfOffBits=54;
	CFile bf;
	if(bf.Open(name,CFile::modeCreate|CFile::modeWrite))
	{
		bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
		bf.WriteHuge(&bfh,sizeof(BITMAPINFOHEADER));
		bf.WriteHuge(lpdata,size);
		bf.Close();
	}
	GlobalFree(lpdata);
	::ReleaseDC(NULL,pDC->GetSafeHdc());
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av网站| 欧美国产日本视频| 国产精品久线在线观看| 日韩精品三区四区| 成人avav影音| 久久久久久一级片| 久久电影网站中文字幕| 欧美三电影在线| 亚洲人一二三区| 国产成人亚洲精品狼色在线| 欧美一级免费大片| 亚洲影视在线播放| 在线一区二区三区做爰视频网站| 久久久99精品免费观看不卡| 另类小说欧美激情| 制服丝袜av成人在线看| 亚洲妇女屁股眼交7| 91蜜桃免费观看视频| 国产精品人人做人人爽人人添| 久久机这里只有精品| 在线综合亚洲欧美在线视频| 亚洲精品视频在线看| 99国产欧美久久久精品| 国产精品美女一区二区| 高清国产一区二区| 欧美激情一区二区三区全黄| 国产一区二区精品在线观看| 久久综合色婷婷| 国产最新精品免费| 国产三区在线成人av| 国产精品系列在线播放| 国产欧美日本一区视频| 福利一区福利二区| 国产精品毛片久久久久久久| 丰满岳乱妇一区二区三区| 欧美韩国日本综合| 色综合一个色综合| 亚洲午夜久久久久久久久久久 | 91免费国产在线| ●精品国产综合乱码久久久久| heyzo一本久久综合| 亚洲乱码中文字幕综合| 欧美亚洲免费在线一区| 天天综合色天天综合| 欧美人体做爰大胆视频| 久久国产尿小便嘘嘘尿| 欧美激情一区二区三区| 日本韩国欧美三级| 无码av免费一区二区三区试看| 欧美老肥妇做.爰bbww视频| 美女视频黄 久久| 国产亚洲成av人在线观看导航| jizz一区二区| 日韩精品国产欧美| 久久精品夜色噜噜亚洲aⅴ| 不卡的电影网站| 午夜欧美视频在线观看| 久久综合久久综合久久综合| 99热国产精品| 青青国产91久久久久久| 欧美高清在线精品一区| 欧美日韩一二区| 国产精品白丝jk黑袜喷水| 亚洲精品视频在线观看网站| 欧美一激情一区二区三区| 成人av免费在线| 视频一区中文字幕国产| 国产精品久久看| 56国语精品自产拍在线观看| 国产福利精品导航| 亚洲成a人在线观看| 国产三级精品三级在线专区| 欧美性色黄大片手机版| 国产中文一区二区三区| 亚洲激情校园春色| 国产亚洲一二三区| 91精品国产综合久久香蕉的特点 | 色94色欧美sute亚洲线路二| 奇米色一区二区| 一区二区三区视频在线看| 欧美精品一区二区三| 欧美日韩精品久久久| 99国产精品久久久久久久久久| 美国三级日本三级久久99| 一区二区三区在线观看视频 | 91精品婷婷国产综合久久竹菊| 成人污污视频在线观看| 久久国产剧场电影| 亚洲一区在线观看免费观看电影高清| 久久久综合九色合综国产精品| 欧美调教femdomvk| 91丨九色丨国产丨porny| 国产乱码一区二区三区| 男人的j进女人的j一区| 亚洲国产美女搞黄色| 亚洲欧美国产毛片在线| 中文字幕av一区二区三区高| 精品日韩一区二区| 日韩午夜激情视频| 欧美精品18+| 欧美日韩免费观看一区二区三区 | 综合电影一区二区三区 | 亚洲电影欧美电影有声小说| 中文字幕亚洲综合久久菠萝蜜| www国产成人| 日韩欧美中文字幕一区| 555夜色666亚洲国产免| 欧美精品国产精品| 欧美高清视频一二三区 | 黑人精品欧美一区二区蜜桃| 日产国产欧美视频一区精品| 日韩精品一卡二卡三卡四卡无卡| 亚洲最大的成人av| 一二三四社区欧美黄| 一区二区三区四区中文字幕| 亚洲男同1069视频| 亚洲在线观看免费视频| 亚洲午夜影视影院在线观看| 五月婷婷久久丁香| 人妖欧美一区二区| 国产乱码精品一品二品| 成人黄色国产精品网站大全在线免费观看| 国产精品99久久久久久有的能看| 丁香婷婷深情五月亚洲| www.亚洲激情.com| 欧美伊人久久大香线蕉综合69| 欧美日韩国产欧美日美国产精品| 欧美一区二区三区精品| 久久综合网色—综合色88| 国产精品你懂的| 亚洲综合视频在线观看| 日韩成人一区二区| 国产精品自拍三区| 91丝袜高跟美女视频| 制服.丝袜.亚洲.中文.综合| 久久这里只精品最新地址| 国产精品伦理在线| 五月天网站亚洲| 国产综合成人久久大片91| 成人不卡免费av| 欧美军同video69gay| 国产亚洲制服色| 一区二区三区欧美在线观看| 人人精品人人爱| www.亚洲精品| 日韩精品中文字幕在线一区| 国产欧美日韩精品一区| 亚洲一区二区三区视频在线播放| 精品亚洲国内自在自线福利| 成人免费视频一区| 欧美日本一区二区在线观看| 国产亚洲短视频| 午夜免费欧美电影| 成人高清视频在线| 91麻豆精品国产自产在线 | 欧美在线免费播放| 精品久久久久久久人人人人传媒| 亚洲少妇30p| 国内精品久久久久影院一蜜桃| 一本色道久久加勒比精品| 日韩欧美国产一区二区在线播放 | 蜜桃视频免费观看一区| 北岛玲一区二区三区四区| 日韩精品一区二区三区在线 | 亚洲欧美另类综合偷拍| 韩国精品久久久| 欧美日本在线视频| 亚洲激情成人在线| 国产91丝袜在线观看| 日韩女优av电影在线观看| 亚洲午夜三级在线| 92精品国产成人观看免费| 欧美精品一区二区三区四区 | 日韩精品一区二区三区中文精品| 亚洲欧美另类久久久精品| 国产成人av资源| 亚洲精品一区在线观看| 青青国产91久久久久久| 欧美日韩中文字幕一区二区| 亚洲男人都懂的| 99久免费精品视频在线观看| 久久久国产精品麻豆| 狠狠色丁香久久婷婷综合丁香| 91麻豆精品国产91久久久资源速度| 夜夜精品视频一区二区| 日本韩国视频一区二区| 亚洲视频中文字幕| 波多野结衣在线aⅴ中文字幕不卡| 久久综合一区二区| 国产一区二区三区在线观看免费视频 | 色偷偷久久人人79超碰人人澡| 国产拍欧美日韩视频二区| 国产在线观看免费一区| 精品国产1区二区| 美日韩黄色大片| 精品成人一区二区| 国内精品写真在线观看| 久久精品欧美日韩| 国产91精品露脸国语对白| 日本一区二区不卡视频|