Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 二维数组中的下拉式元素_C# - Fatal编程技术网

C# 二维数组中的下拉式元素

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

您好,正在寻找一个简单的循环,例如,在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.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”数组的?对这意味着什么有不同的解释,每种解释所需的方法也同样不同!