用俄罗斯方块填充整个2D阵列(俄罗斯方块板),没有剩余空间(Java)

时间:2013-03-18 20:25:41

标签: java arrays 2d fill tetris

假设我有一个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形

使用随机形状填充整个数组并且没有剩余空格的最佳方法是什么。

注意:我让游戏正常运行,我只是想让它适应不同的东西,同时仍然使用俄罗斯方块游戏

2 个答案:

答案 0 :(得分:0)

这实际上是一个非常复杂的问题。在计算机科学中,它被称为Packing Problem,并且有许多可能的算法和可能的方法,具体取决于你想要完成的内容的确切性质。

在一般情况下,这个问题很难,真的很难,事实上,找到一个最优的通用解决方案是NP难的。有关更多信息,请查看Demaine et al from MIT的研究论文。

答案 1 :(得分:0)

看起来并不那么容易。事实上它是NP-hard problemPacking rectangles is similar,你可以从一个更简单的问题开始。