棋盤覆蓋(分治法)

2021-10-10 06:14:10 字數 808 閱讀 4506

#include#define maxnum 100 //最大規模 

using namespace std;

/* 變數設定 */

/**************************

* di: 特定棋子橫座標 *

* dj: 特定棋子縱座標 *

* hi: 棋盤左上角橫座標 *

* hj: 棋盤左上角縱座標 *

* tile:棋子序號 *

* board: 棋盤 *

* maxnum: 棋盤最大規模 *

**************************/

int board[maxnum][maxnum];

int tile = 0;

/* 初始化棋盤 */

void initial(int &size,int &di,int &dj)

/* 顯示棋盤結果 */

void show(int n)

if(di >= hi + size && dj <= hj + size - 1)boardcovery(size,di,dj,hi + size,hj); //左下角區域

else

if(di >= hi + size && dj >= hj + size)boardcovery(size,di,dj,hi + size,hj + size); //右下角區域

else

}int main()

分治法,棋盤覆蓋

分治法 棋盤覆蓋問題 問題描述 在乙個2k x 2k 即 2 k x 2 k 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,要用4不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。思想 將...

分治法 棋盤覆蓋

問題描述 在乙個2 k 2 k個方格組成的棋盤中,有乙個方格與其它的不同,若使用以下四種l型骨牌覆蓋除這個特殊方格的其它方格,如何覆蓋。l型 棋盤 基本原理 實現的基本原理是將2 k 2k的棋盤分成四塊2 k 1 2 k 1 的子棋盤,特殊方格一定在其中的乙個子棋盤中,如果特殊方格在某乙個子棋盤中,...

分治法之棋盤覆蓋

一 問題描述 在乙個2k x 2k 即 2 k x 2 k 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,要用圖示的 4種不同形態的 l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個 l型骨牌不得重疊覆蓋。二 演算法思...