#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型骨牌不得重疊覆蓋。思想 將...