2013-06-21 105 views
-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,0,2.5,2.5,],我們得到[0,0.5,2.5,2.5,]和最後一個相同的值,所以該方法應該能夠檢測到並將它們添加到第一個並刪除它,留下任何「不可能」的數組。

+6

你能清楚嗎? – Tilak

+0

對不起,如果我有點不清楚,我已經更新了這個問題,現在好了嗎? – user2498443

+1

你說'[0,0,0,.001]'不適合,但這個數組也有4個元素並且有十進制值。它不適合? – unlimit

回答

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的大小,這是您的責任。

+0

不,你不能只選擇數字的類型。看起來數字確實是小數,這意味着你的代碼(使用'float')在某些情況下不會給出正確的結果。 – svick

+0

如果我只是將聲明更改爲小數而不是float,該怎麼辦?這會起作用嗎?我並不真正意識到差異。編輯:我剛剛讀過這篇文章,我認爲它是對它的總結,對於那些想知道的人也是如此。 http://stackoverflow.com/a/618542/505810 – Pacane

+0

是的,這應該工作(假設你也將所有文字從'f'改爲'm')。如果你不知道其中的差異,那麼在做這件事時你應該非常小心,尤其是在需要嚴格平等的情況下。 – svick