この記事では、アルゴリズムの分割に基づいてJavaによって実装されたチェスボードカバレッジの問題について説明します。次のように、参照のために共有してください。
2^k * 2^kの正方形で構成されるチェス盤には、他の四角とは異なる正方形があります。次の4つのL字型ドミノを使用して、この特別な正方形を除く他の正方形を覆う場合、それらをカバーする方法。 4つのL字型ドミノを以下に示します。
チェスボードの特別な正方形を図に示します。
実装の基本原則は、2^k * 2^kチェスボードを4^(k -1) * 2^(k -1)サブチェスボードに分割することです。特別な広場は、サブチェスボードの1つにある必要があります。特別な正方形が特定のサブチェスボードにある場合は、このサブチェスボードに1つの正方形しかなくなるまで、サブチェスボードを再帰的に処理し続けます。特別な正方形が特定のサブチェスボードにない場合は、サブチェスボードの対応する位置をドミノ番号として設定し、特別な正方形を特別な正方形でサブチェスボードにボードを変換し、サブチェスボードを再帰的に処理します。上記の原則を図に示します。
特定のコードは次のとおりです。
パッケージデモ;パブリッククラスチェス{ /*TRは、チェスボードの左上隅の行番号、チェスボードの左上隅の列番号、特別なチェスボードの行番号、特別なチェスボードの列番号を示します。 } int t = title ++; int s = size/2; //チェスボードの左上隅を覆うif(dr <tr + s && dc <tc + s){//このチェスボードチェスボードの特別な正方形(TR、TC、DR、DC、S); } else {//このボードには特別な正方形がありません。右下隅をT -Number L字型ドミノ[TR + S -1] [TR + S -1] = T; //正方形のチェスボードの残りの部分をカバーします(TR、TC、TC + S -1、TC + S -1、S)。 } //右上隅を覆う場合(dr <tr + s && dc> = tc + s){//特別な四角いチェスボード(TR、TC + S、DR、DC、S); } else {//このボードには正午に特別な正方形があり、左下隅をT-Number L字型ドミノ[TR + S-1] [TC + S] = T; //正方形のチェスボードの残りの部分(TR、TC + S、TR + S -1、TC + S、S)をカバーします。 } //左下角チェスボードをカバーするif(dr> = tr + s && dc <tc + s){//このボードチェスボードの特別な正方形(TR + S、TC、DR、DC、S); } else {//このボードには特別な正方形がありません。右上隅ボード[TR + S] [TR + S -1] = T; //他の正方形のチェスボード(TR、TC、TC + S、TC + S -1、S)をカバーします。 } //右下隅チェスボード(TR> = TR + S && DC> = TC + S){//このボードチェスボードの特別な正方形(TR + S、TC + S、DR、DC、S); } else {//このボードには特別な正方形がありません。T-Number L字型ドミノを使用して、左上隅ボード[TR + S] [TC + S] = T; //残りの正方形チェスボード(TR + S、TC + S、TC + S、TC + S、S)をカバーします。 }} @suppresswarnings( "static-access")public static void main(string args []){system.out.println( "wulin.comテスト結果:");ボード[2] [2] = 0;チェスch = new Chess(); ch.chessboard(0、0、2、2、size); for(int i = 0; i <size; ++ i){for(int j = 0; j <size; j ++){system.out.print(board [i] [j]+""); } system.out.println(); }} static final int size = 4; static int title = 1; static intボード[] [] = new int [size] [size];}実行結果:
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。