我有四個大小爲2^N的數組,其中N = 25。數組的元素由我的算法生成。這些是排序但包含數字。現在我必須採用array1的每個元素,並選擇array2,array3,array4的元素,使它們的總和應該最小(當我說sum時,我可以取a1 [k] + -a2 [j] + - a3 [m] + -A4 [T]。 我認爲這是類似於K尺寸合併的問題。能否有人點到文學/實施/啓發式做同樣的。 問候, Allahbaksh匹配三個或更多數組中的最接近的數字
回答
步驟1 對於數組1 [k]的,發現在數組2或ARRAY3數字或array4使得其模量是接近於ARRAY1 [K]。
eg .
array1 = {1, 3, 67}
array2 = {-31, 7, 47}
array3 = {-1, 2, 10}
array4 = {14, 15, 66}
For array1[0] (ie. 1), the number closest to it is in array3 and its -1 as mod(-1) = 1
步驟2 然後在剩下的2個數組中,找到一對彼此更接近的數字。 (再次考慮彈性模量)
eg .
array2 = {-31, 7, 47}
array4 = {14, 15, 66}
Closest elements are 7 and 14 with -7 + 14 = 7.
最終你獲得分鐘(A1 [K] + -a2 [j]的+ - A4 [T] - A3 [M] +)所有4個陣列。
因此,對於array1中的1,這給出:1 - 1 - 7 + 14 = 7?但是你可以做得更好:1 + 7 + 10 - 14 = 4。 – Henrik 2012-04-04 07:15:20
這會以指數方式炸燬解決方案。我認爲這樣做的蠻力方式是把它放在for循環中。所以4個for循環用於四個陣列,當N增加時將需要巨大的計算能力。是否有適合KDM合併的啓發式算法? – 2012-04-04 18:27:38
@亨利克:很好。我需要重新審視這個方法。 – 2012-04-04 18:32:03
我認爲這個問題可以在O(n)中解決,合併所有數組在聯合集所以第二個值將數組數。迭代通過它,並在每次迭代形式答案從4個值,在每一步計算所選數字之間的最大距離 - >最小化這個值。
初始化每個數組中數字最小的結果數組。
public Integer[] findClosest(int[][] unionSet, Integer[] result) {
for (int i = 0; i < unionSet.length; i++) {
int value = unionSet[i][0];
int position = unionSet[i][1];
int currentDistance = getDistance(result);
Integer[] temp = Arrays.copyOf(result, result.length);
temp[position] = value;
int newDistance = getDistance(temp);
if (newDistance <= currentDistance) {
result = temp;
}
}
return result;
}
private int getDistance(Integer[] result) {
int max = 0;
int min = 0;
for (int i = 1; i < result.length; i++) {
if (result[i] != null) {
if (result[i] > result[max]) {
max = i;
}
if (result[min] != null && result[i] < result[min]) {
min = i;
}
}
}
return Math.abs(result[max] - result[min]);
}
- 1. 匹配最接近的數字
- 2. 看看3個或更多的數字匹配的數組
- 3. 找到最接近的匹配字符串數組php
- 4. Mysql LIKE或最接近的匹配
- 5. javascript中最接近匹配的返回數組項目
- 6. tsql - 在查找中匹配到最接近的數字
- 7. 最接近的匹配
- 8. 由最接近的匹配
- 9. 最接近的匹配字符串
- 10. 找到最接近匹配的數字的子集
- 11. 匹配最接近的關聯數組值
- 12. 查找最接近給定數字的數組中的數字
- 13. 在數字列表中查找數字對最接近匹配的算法
- 14. MySQL - 在數字範圍內查找最接近的匹配
- 15. Mysql計數與多個ID匹配的最近連續數字行
- 16. 查找3個或更多匹配的數組
- 17. 如何通過匹配最接近的輸入字符串來排序數組?
- 18. MongoDB - 匹配數組中的多個值
- 19. 顯示數據庫中最接近的匹配項
- 20. 在小數列上找到MySQL中最接近的匹配
- 21. MYSQL與多個WHERE獲得最接近的匹配
- 22. 最匹配的數組值
- 23. 返回一個數字的最接近的多個值
- 24. MySQL:選擇最接近的匹配?
- 25. 返回最接近的匹配對象
- 26. Awk到最接近的匹配
- 27. 最接近的匹配值sqlite
- 28. 選擇最接近的匹配
- 29. 尋找最接近的匹配
- 30. 匹配最接近的經度/緯度
1.一個例子會非常有幫助。 2.您可以使用±符號。 – 2012-04-04 06:29:52
你所要求的單詞是微不足道的 - 從array2,3和4中取最小的元素,而不管array1的元素如何,那麼總和也是最小的。但我懷疑你想知道一些不同的東西。 – 2012-04-04 06:38:48