【文件属性】:
文件名称:vc实现棋盘覆盖算法
文件大小:34KB
文件格式:RAR
更新时间:2012-06-09 12:55:43
vc
void CMyDlg::chessBoard(int tr, int tc, int dr, int dc, int size)
{
if(1 == size)
{
return;
}
Sleep(1000); //覆盖L型骨牌后停顿0.01秒,以便观察
int t = this->tile++;
int s = size/2;
if(dr < tr+s && dc < tc+s)
chessBoard(tr,tc,dr,dc,s);
else
{
board[tr+s-1][tc+s-1] = t;
chessBoard(tr,tc,tr+s-1,tc+s-1,s);
this->DrawSubBoard(tr+s-1,tc+s-1,m_dw,t);//递归过程中,此子棋盘中没有特殊方格,调用DrawSubBoard()函数画一个方格,并填充颜色
}
if(dr < tr+s && dc >= tc+s)
chessBoard(tr,tc+s,dr,dc,s);
else
{
board[tr+s-1][tc+s] = t;
chessBoard(tr,tc+s,tr+s-1,tc+s,s);
this->DrawSubBoard(tr+s-1,tc+s,m_dw,t);
}
if(dr >= tr+s && dc < tc+s)
chessBoard(tr+s,tc,dr,dc,s);
else
{
board[tr+s][tc+s-1] = t;
chessBoard(tr+s,tc,tr+s,tc+s-1,s);
this->DrawSubBoard(tr+s,tc+s-1,m_dw,t);
}
if(dr >= tr+s && dc >= tc+s)
chessBoard(tr+s,tc+s,dr,dc,s);
else
{
board[tr+s][tc+s] = t;
chessBoard(tr+s,tc+s,tr+s,tc+s,s);
this->DrawSubBoard(tr+s,tc+s,m_dw,t);
}
}
【文件预览】:
分治解决棋盘覆盖问题
----分治解决棋盘覆盖问题Dlg.cpp(9KB)
----StdAfx.cpp(222B)
----分治解决棋盘覆盖问题Dlg.h(2KB)
----分治解决棋盘覆盖问题.opt(48KB)
----分治解决棋盘覆盖问题.h(1KB)
----分治解决棋盘覆盖问题.rc(7KB)
----分治解决棋盘覆盖问题.ncb(81KB)
----分治解决棋盘覆盖问题.plg(1KB)
----分治解决棋盘覆盖问题.cpp(2KB)
----分治解决棋盘覆盖问题.dsp(5KB)
----分治解决棋盘覆盖问题.dsw(565B)
----分治解决棋盘覆盖问题.clw(2KB)
----ReadMe.txt(4KB)
----StdAfx.h(1KB)
----Resource.h(1KB)
----RCa03548(13KB)
----分治解决棋盘覆盖问题.aps(24KB)