java實現分治法 棋盤覆蓋問題

2021-08-21 19:36:57 字數 1071 閱讀 5570

/**

* 分治演算法

* * 棋盤覆蓋問題

* * 2 2 3 3

* 2 1 1 3

* 4 1 0 1

* 4 4 1 1

* */

public class chessboradproblem

/*** @param specialrow 特殊點的行下標

* @param specialcol 特殊點的列下標

* @param leftrow 矩陣的左邊起點行下標

* @param leftcol 矩陣的左邊起點列下標

* @param size 矩陣的寬或者高

* */

private void chessboard(int specialrow,int specialcol,int leftrow,int leftcol,int size)

int subsize = size / 2;

type = type % 4 + 1;

int n = type;

//假設特殊點在左上角區域

if(specialrow < leftrow + subsize && specialcol < leftcol + subsize)else

//假設特殊點在右上方

if(specialrow < leftrow + subsize && specialcol >= leftcol + subsize)else

//特殊點在左下方

if(specialrow >= leftrow + subsize && specialcol < leftcol + subsize)else

//特殊點在右下角

if(specialrow >= leftrow + subsize && specialcol >= leftcol + subsize)else

for(int i = 0;i < size;i++)

system.out.println();}}

public static void main(string args)

}

分治法 棋盤覆蓋問題

棋盤覆蓋問題。有乙個2k 2k 的方格棋盤,恰有乙個方格是黑色的,其他為白色。你的任務是用包含3個方格的l型牌覆蓋所有白色方格。黑色方格不能被覆蓋,且任意乙個白色方格不能同時被兩個或更多牌覆蓋。如圖所示為l型牌的4種旋轉方式。分治三步驟 劃分問題 將 2 k 2k 的棋盤劃分為 2 k 1 2k 1...

分治法 棋盤覆蓋問題

在2k 2k的棋盤中有乙個特殊方格,特殊方格的位置共有4k種情況。下圖是22 22棋盤的一種情況 棋盤覆蓋問題要求用下圖中四種不同形態的l型骨牌覆蓋這乙個棋盤,並且l型骨牌之間不能重疊。每個l型骨牌佔三個格,拋去特殊方格,棋盤一共還剩4k 1個格,因此需要的方格數為 4k 1 3個。上例的棋盤經填充...

棋盤覆蓋問題(分治法)

有乙個2k 2k k 0 的棋盤,恰好有乙個方格與其他方格不同,稱之為特殊方格,並且稱該棋盤為一特殊棋盤。現在要用4種不同形狀的三格骨牌覆蓋除了特殊方格外的其他全部方格,並且任何兩個三格骨牌不能重疊。請給出一種覆蓋方案 特殊棋盤 k 3時 四種形狀的三格骨牌 使用二分法對整個棋盤進行劃分 分為四個象...