/**
* 遞迴分治演算法學習之分割棋盤
* @author sking
棋盤分割問題:
在乙個2k×2k 個方格組成的棋盤中,恰有乙個方格與其他方格
不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在
棋盤覆蓋問題中,要用4種不同形態的l型骨牌覆蓋給定的特殊棋盤
上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。
*/package 遞迴分治;
public class chessboarddivision
/*** 遞迴分割棋盤的核心方法
* * @param tr
* 當前棋盤左上角的縱座標
* @param tc
* 當前棋盤左上角的橫座標
* @param dr
* 特殊方格的縱座標
* @param dc
* 特殊方格的橫座標
* @param size
* 當前棋盤的邊長
*/public void chessboard(int tr, int tc, int dr, int dc, int size)
// 覆蓋右上角子棋盤
if (dr < tr + s && dc >= tc + s)
// 特殊方格在此棋盤中
chessboard(tr, tc + s, dr, dc, s);
else
// 覆蓋左下角子棋盤
if (dr >= tr + s && dc < tc + s)
// 特殊方格在此棋盤中
chessboard(tr + s, tc, dr, dc, s);
else
// 覆蓋右下角子棋盤
if (dr >= tr + s && dc >= tc + s)
// 特殊方格在此棋盤中
chessboard(tr + s, tc + s, dr, dc, s);
else
} public static void main(string args)
system.out.println();
} }}
遞迴 棋盤分割問題
language default 棋盤分割 time limit 1000ms memory limit 10000k total submissions 11819 accepted 4175 description 將乙個 的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩...
coursera演算法初步 遞迴 棋盤分割問題
將乙個8 8的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的部分繼續如此分割,這樣割了 n 1 次後,連同最後剩下的矩形棋盤共有n塊矩形棋盤.每次切割都只能沿著棋盤格仔的邊進行 注意粗體字 再將剩下的部分繼續切割 也就是說,被割出去的那一塊是不允許再被切割的。原棋盤上每一...
遞迴與分治之棋盤覆蓋問題
在乙個2 k 2 k個方格組成的棋盤中,若有乙個方格與其他方格不同,則稱該方格為一特殊方格,且稱該棋盤為乙個特殊棋盤。顯然特殊方格在棋盤上出現的位置有4 k種情形.因而對任何k 0,有4 k種不同的特殊棋盤。下圖所示的特殊棋盤為 k 2 時 16 個特殊棋盤中的乙個。在棋盤覆蓋問題中,要用下圖中 4...