#include
#include
#define board_size 4//該棋盤矩陣的維度
using namespace std;
int board[board_size][board_size];//宣告該棋盤矩陣
void chessboard(int tr,int tc,int dr,int dc,int size)
//tr,tc為最左上角的座標,dr,dc為特殊方塊所在的座標,size為該棋盤的規模
//覆蓋右下角子棋盤
if(dr>=tr+s && dc>=tc+s)
//特殊方格在此棋盤中
chessboard(tr+s,tc+s,dr,dc,s);
else//此棋盤中沒有特殊方格 }
int main()
return 0;
}
C語言解決棋盤覆蓋問題
棋盤覆蓋問題是典型的利用分治法解決問題 把大問題分解成為相同性質的子問題 分治的技巧在於如何劃分棋盤,使劃分後的子棋盤的大小相同,並且每個子棋盤均包含乙個特殊方格,從而將原問題分解為規模較小的棋盤覆蓋問題。k 0時,可將2 k 2 k的棋盤劃分為4個2 k 1 2 k 1 的子棋盤,如圖4.11 a...
問題 C 棋盤覆蓋問題
題目描述 在乙個n n n 2k 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,要用圖示的4種不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。輸入多組測試用例,每組測試用例包括兩部分,第...
分治法解決棋盤覆蓋問題
在乙個2k x 2k 即 2 k x 2 k 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,要用圖示的4種不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。這裡我們用分治法解決該問題。分治...