簡單acm題 棋盤覆蓋

2021-09-30 16:07:12 字數 786 閱讀 9067

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

k,dr,dc。k定義如前,dr,dc分別表示特殊方格所在的行號和列號 1= < k < =6

按照左上,右上,左下,右下的順序用分治法求解。特殊方格標0,其他位置按上述順序依次標記。

2 1 1
2 2 3 3 

2 0 1 3

4 1 1 5

4 4 5 5

//棋盤覆蓋只需要不斷的把棋盤分小然後用上述的l骨牌來把他變為特殊方格

#include #include #include #include #include #include using namespace std;

#define ll long long

const int n = 1e6+5;

int a[100][100];

int cnt=1;

void f(int tr,int tc,int dr,int dc,int flag)//遞迴程式

//左下角

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

f(tr+s,tc+s,dr,dc,s);

else

}int main()

cout<

}return 0;

}

棋盤覆蓋問題

source code include include include using namespace std const int n 1024 int board n n count void cover int sx,int sy,int cx,int cy,int size,int cx1,i...

棋盤覆蓋演算法

在乙個2k 2k個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤,顯然特殊方格在棋盤上出現的位置有4k種情形。因而對任何k 0,有4k種不同的特殊棋盤。特殊方格必位於4個較小子棋盤之一中,其餘3個子棋盤中無特殊方格。為了將這3個無特殊方格的子棋盤轉化為特殊...

棋盤覆蓋問題

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