c 解決棋盤覆蓋問題

2021-09-01 13:14:26 字數 452 閱讀 7813

#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型骨牌不得重疊覆蓋。這裡我們用分治法解決該問題。分治...