C# 二维数组中的下拉式元素
您好,正在寻找一个简单的循环,例如,在2d数组中数字会下降C# 二维数组中的下拉式元素,c#,C#,您好,正在寻找一个简单的循环,例如,在2d数组中数字会下降 0 0 0 3 3 2 1 3 1 1 1 1 5 1 1 1 2 0 0 0 0 0 0 0 2 预期: 0 0 0 0 0 0 0 0 0 3 2 1 0 3 1 1 1 3 1 1 1 2 5 1 2 你有什么建议吗?多谢各位 提示:下降意味着非零项必须在每列中下降 这里有一个解决方案: void FallDown(ref int[,] numbers) { var rowCount = numbers.GetLen
0 0 0 3 3
2 1 3 1 1
1 1 5 1 1
1 2 0 0 0
0 0 0 0 2
预期:
0 0 0 0 0
0 0 0 0 3
2 1 0 3 1
1 1 3 1 1
1 2 5 1 2
你有什么建议吗?多谢各位
提示:下降意味着非零项必须在每列中下降 这里有一个解决方案:
void FallDown(ref int[,] numbers)
{
var rowCount = numbers.GetLength(0);
for (var c = 0; c < numbers.GetLength(1); c++)
{
var colValues = new List<int>();
for (var r = 0; r < rowCount; r++)
{
var colValue = numbers[r, c];
if (colValue > 0)
{
colValues.Add(colValue); // collect only non-zero values
}
}
if (colValues.Count < rowCount) // there were zeroes ...
{
do
{
colValues.Insert(0, 0); // fill it up with leading zeroes.
} while (colValues.Count < rowCount);
for (var r = 0; r < rowCount; r++) {
numbers[r, c] = colValues[r]; // put numbers back into original array
}
}
}
}
void下拉列表(参考整数[,]个)
{
var rowCount=numbers.GetLength(0);
for(var c=0;c0)
{
colValues.Add(colValue);//只收集非零值
}
}
如果(colValues.Count
结果将在原始数组中被替换,这就是为什么它被ref
传入的原因
public void FallDown()
{
for (var row = 0; row < RowCount - 1; row++)
{
for (var column = 0; column < ColumnCount; column++)
{
if (tiles[row + 1, column] == 0 && tiles[row, column] != 0)
{
tiles[row + 1, column] = tiles[row, column];
tiles[row, column] = 0;
row = 0;
column = 0;
}
}
}
}
public void下拉列表()
{
对于(变量行=0;行<行计数-1;行++)
{
对于(var column=0;column
到目前为止,您尝试了什么?请出示一些代码。你想要“下降”中的一个步骤还是立即显示结果?我想要立即显示结果。你应该编辑问题以包含代码,而不是将其放入注释中。你是如何声明“2D”数组的?对这意味着什么有不同的解释,每种解释所需的方法也同样不同!