1

改行文字でページをカスケードするのではなく、左から右に 2 次元配列を印刷する方法についての洞察を探しています。

その小さな 9 タイルのゲームを解決する学部の AI コース用の簡単なプログラムを作成しました。

public void printNode(){
    for(int i = 0; i < 3; i ++){
        System.out.printf("[ ");
        for(int k = 0; k < 3; k++){
            System.out.printf(" " + state[i][k] + " ");
        }
        System.out.printf("]\n");
    }
}

これにより、2 次元配列が問題なく出力されます。

しかし、配列を左から右に印刷する方法を探しているので、プログラムが機能することを証明するために 50 ページ以上の変換を提出する必要はありません。以前にこの問題を解決した人はいますか?

[ 1 2 3 ] [1 2 3]
[ 8 0 4 ] [8 0 4]
[ 7 6 5 ] [7 6 5]

これが私が作成したい効果です。変換のソリューション パスは、チェーンを遡る一連のポインターです。私の各ノードには、その先祖へのポインタがあります。そのため、ポインターを簡単にたどってすべてを印刷できます。

4

2 に答える 2

0

ここでは実装の詳細には触れませんが、実行できるいくつかの手順を次に示します。

  • すべての行列の一番上の行をすべて出力すると、次のような文字列が得られます

[ 1 2 3 ] [1 2 3]

  • 改行を追加し、すべてのマトリックスの次の行を出力します。

[ 1 2 3 ] [1 2 3]
[ 8 0 4 ] [8 0 4]

  • マトリックス全体が印刷されるまで続けます。

[ 1 2 3 ] [1 2 3]
[ 8 0 4 ] [8 0 4]
[ 7 6 5 ] [7 6 5]

基本的に、高さに等しい各マトリックスを反復処理します。高さが異なる場合は、短いものをスキップして、その場所に空白を残すことができます。

于 2013-03-22T16:56:52.957 に答える
0
public void printTwoNodes(int arr[], int arr2[]){
    for(int i = 0; i < 3; i ++){
        System.out.printf("[ ");
        for(int k = 0; k < 3; k++){
            System.out.printf("" + arr[i][k] + " ");
        }
        System.out.printf("]");
        System.out.printf("[ ");
        for(int j = 0; j < 3; j++){
            System.out.printf("" + arr2[i][j] + " ");
        }
        System.out.printf("]\n");
    }
}

改善できるし改善すべき

于 2013-03-22T16:59:10.853 に答える