我有一个int值列表,如下所示(上限和下限是动态的)
1, 2, 3
4, 6, 0
5, 7, 1
我想以垂直方式计算列值,如
1 + 4 + 5 = 10
2 + 6 + 7 = 15
3 + 0 + 1 = 4
预期结果= 10,15,4
任何帮助将不胜感激
由于
迪普
答案 0 :(得分:2)
如果您使用2D数组,则可以将每行的第一列,第二列相加。
如果使用1D阵列,则只需使用模数:
int[] results = new results[colCount];
for(int i=0, i<list.Count; list++)
{
results[i%colCount] += list[i];
}
答案 1 :(得分:2)
这是使用数组文字的输入数据,但后续代码在数组或列表上的工作方式完全相同。
var grid = new []
{
new [] {1, 2, 3},
new [] {4, 6, 0},
new [] {5, 7, 1},
};
现在生成一个序列,每列有一个项目(取最短行中的元素数量),其中项目的值是行[column]值的总和:
var totals = Enumerable.Range(0, grid.Min(row => row.Count()))
.Select(column => grid.Sum(row => row[column]));
打印:
foreach (var total in totals)
Console.WriteLine(total);
答案 2 :(得分:0)
你必须使用“列表” - 对象吗? Elseway,我会使用一个二维数组。
否则,您只需尝试,如何分别到达行和列,这样您就可以在简单的for循环中添加数字。它取决于List-object的方法。
答案 3 :(得分:0)
基于这个问题相当不灵活,但是怎么样:
int ans = 0;
for(int i = 0; i < list.length; i+=3)
{
ans+= list[i];
}
你可以使用不同的初始迭代器值运行相同的3次,或者将整个事物放在另一个循环中,使用 startValue 作为运行3次的交互器。
话虽如此,你可能想要a)查看一种不同的存储数据的方式,如果它们确实存在于单个列表中b)查看更灵活的方法或者包含一个允许你的功能考虑不同的列号等...
干杯, 亚当