假设我有一个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形
使用随机形状填充整个数组并且没有剩余空格的最佳方法是什么。
注意:我让游戏正常运行,我只是想让它适应不同的东西,同时仍然使用俄罗斯方块游戏
答案 0 :(得分:0)
这实际上是一个非常复杂的问题。在计算机科学中,它被称为Packing Problem,并且有许多可能的算法和可能的方法,具体取决于你想要完成的内容的确切性质。
在一般情况下,这个问题很难,真的很难,事实上,找到一个最优的通用解决方案是NP难的。有关更多信息,请查看Demaine et al from MIT的研究论文。
答案 1 :(得分:0)
看起来并不那么容易。事实上它是NP-hard problem。 Packing rectangles is similar,你可以从一个更简单的问题开始。