js演算法 分治法 棋盤覆蓋

2021-07-04 18:10:45 字數 993 閱讀 4046

在乙個 2^k * 2^k 個方格組成的棋盤中,若恰有乙個方格與其它方格不同,則稱該方格為一特殊方格,稱該棋盤為一特殊棋盤。顯然特殊方格在棋盤上出現的位置有 4^k 種情形。因而對任何 k>=0 ,有 4^k 種不同的特殊棋盤。下圖所示的特殊棋盤為 k=2 時 16 個特殊棋盤中的乙個。

在棋盤覆蓋問題中,要用下圖中 4 中不同形態的 l 型骨牌覆蓋乙個給定的特殊棋牌上除特殊方格以外的所有方格,且任何 2 個 l 型骨牌不得重疊覆蓋。易知,在任何乙個 2^k * 2^k 的棋盤中,用到的 l 型骨牌個數恰為 (4^k-1)/3 。

用分治策略,可以設計解棋盤問題的乙個簡捷的演算法。

當 k>0 時,將 2^k * 2^k 棋盤分割為 4 個 2^(k-1) * 2^(k-1) 子棋盤,如下圖所示。

特殊方格必位於 4 個較小子棋盤之一中,其餘 3 個子棋盤中無特殊方格。為了將這 3 個無特殊方格的子棋盤轉化為特殊棋盤,我們可以用乙個 l 型骨牌覆蓋這 3 個較小的棋盤的匯合處,如下圖所示,這 3 個子棋盤上被 l 型骨牌覆蓋的方格就成為該棋盤上的特殊方格,從而將原問題化為 4 個較小規模的棋盤覆蓋問題。遞迴的使用 這種分割,直至棋盤簡化為 1x1 棋盤。

級數:	    座標x:

座標y:

js演算法 分治法 棋盤覆蓋

在乙個 2 k 2 k 個方格組成的棋盤中,若恰有乙個方格與其他方格不同。則稱該方格為一特殊方格,稱該棋盤為一特殊棋盤。顯然特殊方格在棋盤上出現的位置有 4 k 種情形。因而對不論什麼 k 0 有 4 k 種不同的特殊棋盤。下圖所看到的的特殊棋盤為 k 2 時 16 個特殊棋盤中的乙個。在棋盤覆蓋問...

分治法,棋盤覆蓋

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

分治法 棋盤覆蓋

問題描述 在乙個2 k 2 k個方格組成的棋盤中,有乙個方格與其它的不同,若使用以下四種l型骨牌覆蓋除這個特殊方格的其它方格,如何覆蓋。l型 棋盤 基本原理 實現的基本原理是將2 k 2k的棋盤分成四塊2 k 1 2 k 1 的子棋盤,特殊方格一定在其中的乙個子棋盤中,如果特殊方格在某乙個子棋盤中,...