/**
* 分治演算法
* * 棋盤覆蓋問題
* * 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時 四種形狀的三格骨牌 使用二分法對整個棋盤進行劃分 分為四個象...