添加十进制数组

时间:2013-06-21 01:56:45

标签: c#

我有三个阵列:

[0, 0, 2.5, 2.5, ]
[0, 0.5, 0, 0,]
[0, 2.0, 0, 0, ]

我正在寻找一个算法来遍历它们并将它们添加到第一个数组中,如果我们可以在该数组的索引中实现相同的值(在这种情况下为2.5),如果它们被添加则删除它们并离开除了所有其他不适合的数组(例如[0,0,0,0.001]),我甚至无法开始绕过这一个,对我来说棘手的部分是确定两个(或更多)其他数组的组合可以填补第一个。

例如,如果我们将[0,0.5,0,0,]添加到[0,0,2.5,2.5],我们得到[0,0.5,2.5,2.5,]和最后一个相同,所以该方法应该能够检测到并将它们添加到第一个并删除它,留下任何“不可能”的数组。

1 个答案:

答案 0 :(得分:0)

var arraysToBeAdded = new List<decimal[]>();
const int numberOfElementsPerArray = 4;

arraysToBeAdded.Add(new decimal[numberOfElementsPerArray]{ 0.0M, 0.0M, 0.0M, 0.0M});
arraysToBeAdded.Add(new decimal[numberOfElementsPerArray]{ 4.1M, 3.1M, 2.1M, 1.1M});
arraysToBeAdded.Add(new decimal[numberOfElementsPerArray]{ 1.1M, 1.1M, 1.1M, 1.1M});

for(int j = 1; j < arraysToBeAdded.Count; ++j){
    for(int i = 0; i < 4; i++){
        arraysToBeAdded[0][i] += arraysToBeAdded[j][i];
        arraysToBeAdded[j][i] = 0;
    }
}

您可以更改数组中包含的类型,我选择float但它可以是任何内容。 您还可以更改数组中包含的项目数量。

最后,我使用List来包含数组,但没有任何内容表明列表中包含的数组大小必须为4,这是你的责任。