我有三个阵列:
[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,]和最后一个相同,所以该方法应该能够检测到并将它们添加到第一个并删除它,留下任何“不可能”的数组。
答案 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,这是你的责任。