gpt4 book ai didi

c# - 落下二维数组中的元素

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:08 25 4
gpt4 key购买 nike

你好寻找简单的循环,例如数字将落在二维数组中

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
}
}
}
}

结果会被替换到原来的数组中,这就是为什么要用ref传入的原因。

关于c# - 落下二维数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55091008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com