假設我有一組數字。現在我想找出它們與 0.2 的偏差最小(總共)的加法組合是什么?每個數只能與配對一個其它號碼。
比如數字是0.1, 0.15, 0.3, 0.2, 0.13... Pair_1: 0.1 0.15, pair_2= 0.3 02... 那么設d_i為pair i的偏差,如何求加法組合達到 d_i 的最小總和?
想了很久,還是沒能用Python解決這個問題。偏離 0.2 最少的一種組合可能會導致另一種組合更多地偏離 0.2。
求救求救
uj5u.com熱心網友回復:
這是我根據我對問題的理解撰寫的一些代碼來解決問題:
list_of_numbers = [0.1, 0.15, 0.3, 0.2, 0.13]
base_number = 0.2
def devianceFrom(number, list_of_numbers):
results = []
combinations = []
for i in range(0, len(list_of_numbers)):
for j in range(0, len(list_of_numbers)):
if j > i or j == i:
continue
else:
results.append(list_of_numbers[j] list_of_numbers[i])
combinations.append([list_of_numbers[j], list_of_numbers[i]])
for n in range(0, len(results)):
results[n] = abs(results[n]-number)
minCombo = min(results)
index = results.index(minCombo)
try:
for ind in index:
print("{} is the minimum difference using the sum of {} and {}.".format(results[ind], combinations[ind][0], combinations[ind][1]))
except:
print("{} is the minimum difference using the sum of {} and {}.".format(results[index], combinations[index][0], combinations[index][1]))
devianceFrom(base_number, list_of_numbers)
但是,這只會找到一組最小值。因此,如果您需要創建最小差異的所有組合,則需要進行一些修改。
編輯:它給出的列印結果是“0.03 是使用 0.1 和 0.13 之和的最小差異”。
如果這不是您要找的答案,請進一步解釋。此外,如果需要,我可以發送注釋代碼或代碼解釋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/383939.html
上一篇:C中的遞回生物項系數
下一篇:e^x沒有math.h
