【发布时间】:2023-03-21 07:25:02
【问题描述】:
我有一个基于俄罗斯方块编队的任务,我必须将其放入队列中,然后从队列中(如果条件适用)将编队放入二维数组中,并以最佳方式填充数组。 我从二维数组制作编队并将它们放入队列中,但我不知道如何将队列中的编队放入二维数组。确定一个编队是否进入二维数组的条件是是否有足够的空间容纳它。如果没有,则应将编队 enqueue()d 到队列的末尾,以便稍后再次使用。
int[,] I1 = new int[4, 1] { { 1 }, { 1 }, { 1 }, { 1 } };
int[,] I2 = new int[1, 4] { { 1, 1, 1, 1 } };
int[,] Z1 = new int[3, 2] { { 0, 1 }, { 1, 1 }, { 1, 0 } };
等等。
这些都在这个队列中:
Queue<int[,]> myqueue = new Queue<int[,]>();
myqueue.Enqueue(I1);
myqueue.Enqueue(I2);
myqueue.Enqueue(Z1);
我尝试将它们复制到这样的二维数组中:
int[,] Drawer = new int[10, 20];
for (int i = 0; i < Drawer.GetLength(0); i++)
{
for (int j = 0; j < Drawer.GetLength(1); j++)
{
while (Drawer[i,j]==0&& myqueue.Count >0)
{
int[,] dequeued = myqueue.Dequeue();
for (int k = 0; k < dequeued.GetLength(0); k++)
{
for (int l = 0; l < dequeued.GetLength(1); l++)
{
Drawer[i, j] = dequeued[k, l];
}
}
}
}
}
但它不起作用。我还考虑过不完全将项目复制到数组中,而只是根据队列中的项目用适当数量的 1 填充数组。 (我编辑了代码并将匈牙利变量更改为英语并添加了一个条件,因此它不会是一个无限循环。此外,Drawer[,] 数组是一个矩阵,应该显示一个包含元素的抽屉,如自动填充整个矩阵而不留下任何空白空间的俄罗斯方块。)
【问题讨论】: