棋盤覆蓋 分治

2021-08-28 07:34:07 字數 846 閱讀 8509

#include "pch.h"

#include "iostream"

using namespace std;

/** 棋盤問題,分治演算法

*/int q[1024][1024]; //棋盤陣列,全域性變數

static int tile = 1; //骨牌編號

//tr 棋盤左上角行數,tc 棋盤左上角列數,dr 特殊方格所在行數, dc 特殊方格所在列數,size 棋盤大小

void qp(int tr, int tc, int dr, int dc, int size)

else

//覆蓋右上角棋盤

if (dr < tr + s && dc >= tc + s)

else

//覆蓋左下角棋盤

if (dr >= tr + s && dc < tc + s)

else

//覆蓋右下角棋盤

if (dr >= tr + s && dc >= tc + s)

else

}int k(int n)

if (n == 1)

else

}int main()

int dr, dc;

cout << "請輸入特殊方格所在行數" << endl;

cin >> dr;

cout << "請輸入特殊方格所在列數" << endl;

cin >> dc;

qp(0,0,dr,dc,n);

for (int i = 0; i < n; i++)

cout << endl;

}}

分治 棋盤覆蓋

題目描述 在乙個2 k 2 k個方格組成的棋盤中,若恰有乙個方格與其它方格不同,則稱該方格為一特殊方格,稱改棋盤為一特殊棋盤。顯然特殊方格在棋盤上出現的位置有4 k種情形。因而對任何k 0,有4 k種不同的特殊棋盤。下圖所示的特殊棋盤為k 2時16個特殊棋盤中的乙個。在棋盤覆蓋問題中,要用下圖中4中...

棋盤覆蓋 分治

問題描述 在乙個2 k 2 k k 0 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為特殊方格。顯然,特殊方格在棋盤中可能出現的位置有 4 k種,因而有 4 k種不同的棋盤,圖 a 所示是 k 2時 16種棋盤中的乙個。棋盤覆蓋問題 chess cover problem 要求用圖 b ...

分治法,棋盤覆蓋

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