遞迴分治演算法之棋盤分割問題(Java版本)

2021-06-11 08:27:35 字數 1150 閱讀 9544

/**

* 遞迴分治演算法學習之分割棋盤

* @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...