分治學習之棋盤覆蓋問題(java)

2021-09-03 08:14:48 字數 825 閱讀 3323

package fz;

/*2 0 3 3

2 2 1 3

4 1 1 1

4 4 1 1

棋盤乙個特殊點用l型的棋子進行覆蓋

//進行分治法計算 然後分成更小的 比如4分成2,2,2,2 的矩陣 然後進行繼續分 分成1,1,1,1的標明其他非特殊點

*/public class chessboradproblem

/*board棋盤

specialrow特殊行

specialcol特殊的列

leftrow矩陣最左邊的行

leftcol矩陣最左邊的列

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=leftcol+subsize)else

//特殊點在左下角

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

}public void prentfboard()

system.out.println();}}

public static void main(string args)

}

分治 棋盤覆蓋問題

描述 在乙個2 k 2 k個方格組成的棋盤中,任意存在乙個特殊方格,那麼總有 4 k 1 3個l型骨牌可以將剩餘方格完全覆蓋。分析 將棋盤橫豎四等分,則特殊方格必存在於某一區域。存在特殊方格的區域自然可以完全覆蓋,其餘三個無特殊方格的區域必須去掉乙個方格方可用l型骨牌完全覆蓋。故,將三區域相鄰部分用...

分治策略之棋盤覆蓋問題

1 引出 首先用合併排序來引出我們今天的主角,合併排序即使用了分治的策略,它將所要排序的區間劃分為2個子區間,將這兩個子區間分別進行遞迴排好順序,然後合併這兩個子區間 合併過程運用了簡單的雙指標演算法 即獲得原問題的解。其實棋盤覆蓋問題也是這樣的。2 主角登場 問題 在乙個2k 2k個方格組成的棋盤...

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

分治演算法 棋盤覆蓋問題 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 矩陣的左邊起點行下標...