l型骨牌棋盤覆蓋
題目描述
有乙個棋盤,要求用給定的四種骨牌進行覆蓋。四種骨牌定義如下:
給定的棋盤中有乙個格仔不存在,即不需要覆蓋的格仔。
輸入輸入有多個用例,第乙個為用例個數n,接下來每個用例佔兩行,其中第一行為棋盤大小(如3,表示棋盤大小為2的3次,即8行8列),第二行為兩個正整數,表示空缺的格仔行號和列號。
輸出每個用例用一行輸出各種骨牌的使用數,用乙個空格隔開。
樣例輸入13
1 1樣例輸出
9 5 5 2
如圖:
1、先判斷缺的瓷磚在整個棋盤的那個位置(左上,右上,左下,右下),缺的瓷磚在1號。
2、在中間放乙個對應1號瓷磚。
3、在將再將左上的部分分解,重複直到只有乙個瓷磚。
accode:
#include #include using namespace std;
int k1,k2,k3,k4;
void work(int rs,int re,int cs,int ce, int u,int w)
else //處於右部分
}else //下面
else
}}int main()
{ int t,n,u,w;
cin>>t;
while(t--)
{ k1=k2=k3=k4=0;
cin>>n>>u>>w;//u,w表示缺的位置
n = (int)pow(2,n);
work(1,n,1,n,u,w);
cout<
分治演算法 棋盤覆蓋
問題描述 在乙個2 k 2 k 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,要用圖示的4種不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。解題思路 分析 當k 0時,將2k 2k棋盤分...
棋盤覆蓋問題 分治演算法
演算法日誌記錄pta 在乙個2 k 2 k k為正整數,k 10,length 2 k 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格 其座標為aa,bb,分別代表行座標號和列座標號 以及有四種l型骨牌 如下圖 求用若干塊這種l型骨牌實現除該特殊點棋盤的全覆蓋。本題要求採用分治...
分治 棋盤覆蓋
題目描述 在乙個2 k 2 k個方格組成的棋盤中,若恰有乙個方格與其它方格不同,則稱該方格為一特殊方格,稱改棋盤為一特殊棋盤。顯然特殊方格在棋盤上出現的位置有4 k種情形。因而對任何k 0,有4 k種不同的特殊棋盤。下圖所示的特殊棋盤為k 2時16個特殊棋盤中的乙個。在棋盤覆蓋問題中,要用下圖中4中...