4 棋盤覆蓋

2021-07-14 09:03:58 字數 1100 閱讀 5104

(1)問題

在乙個2^k×2^k個方格組成的棋盤中,若有乙個方格與其他方格不同,則稱該方格為一特殊方格,且稱該棋盤為乙個特殊棋盤.顯然特殊方格在棋盤上出現的位置有4^k種情形.因而對任何k≥0,有4^k種不同的特殊棋盤.

當k=3時,一共有64種特殊棋盤,圖1為其中的一種.

用下圖2所示的4種不同形態的l型骨牌覆蓋乙個給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋.

圖2(2)實現

package com.test;

public class test

private static void print()

system.out.println();

} }/**

* * @param tr 棋盤左上角行號

* @param tc 棋盤左上角列號

* @param dr 特殊方格行號

* @param dc 特殊方格列號

* @param size 棋盤的邊長

*/public static void chessboard(int tr,int tc,int dr,int dc,int size)

int t = tile++;

int s = size/2;

//覆蓋左上角棋盤

if (dr=tc+s) else

//覆蓋左下角棋盤

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

}}

(3)執行結果

演算法實驗4 棋盤覆蓋

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

棋盤覆蓋問題

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個無特殊方格的子棋盤轉化為特殊...