4

2D int 配列があるとしましょう..

int[][] board = new int[10][20];

public void initBoard()
{
    for(int r = 0; r < 10; r++)
        for(int c = 0; c < 20; c++)
            board[r][c] = 0;
}

0 は駒がないことを意味します。駒は 1 ~ 7 で表されます。

1 - Z 形状

2 - S字

3 - 線の形

4 - T形

5 - ボックス形状

6 - L型

7 - 後方 L 型

配列全体をランダムな形状で埋め、スペースを残さない最良の方法は何ですか?

注: ゲームは動作しています。テトリスのゲームプレイを使用しながら、別のゲームに適応させようとしています。

4

2 に答える 2

3

これは実際、あなたが尋ねている非常に複雑な質問です。コンピューター サイエンスでは、これはPacking Problemとして知られており、達成したいことの正確な性質に応じて、多数の可能なアルゴリズムと可能なアプローチがあります。

一般的なケースでは、この問題は非常に難しく、実際、最適な一般解を見つけるのは NP 困難です。詳細については、MIT の Demaine らによる研究論文をご覧ください。

于 2013-03-18T20:34:27.203 に答える
1

見た目ほど簡単ではありません。実際、これはNP 困難な問題です。四角形のパッキングも同様です。少し単純な問題から始めることができます。

于 2013-03-18T20:34:34.027 に答える