-4

我有三个数组:

[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, ] 和最后一个相同,所以该方法应该能够检测到并将它们都添加到第一个并删除它,留下任何“不可能”的数组。

4

1 回答 1

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但它可以是任何东西。您还可以更改数组中包含的项目数量。

最后,我使用 aList来包含数组,但没有说列表中包含的数组的大小必须为 4,这是您的责任。

于 2013-06-21T13:47:46.117 回答