"""
給定一個數組,找出數組中是否有兩個數對(a,b)和(c,d),使得a+b=c+d,其中,a、b、c、d是不同的元素。
如果是多個答案,打印任意一個即可。
例如給定數組[3,4,7,10,20,9,8],可以找到連個數組(3,8)和(4,7),使得3+8=4+7
"""
# 用來存儲數對
class pair:
def __init__(self, first, second):
self.first = None
self.second = None
self.first = first
self.second = second
def findPairs(arr):
# 鍵爲數對的和,值爲數對
sumPair = dict()
n = len(arr)
# 遍歷數組中所有可能的數對
i = 0
while i<n:
j = i + 1
while j<n:
# 如果這個數對的和在map中沒有,則放入mapz中
sums = arr[i] + arr[j]
if sums not in sumPair:
sumPair[sums] = pair(i, j)
# 如果map中已經存在與sum相同的數對了,找出並打印出來
else:
p = sumPair[sums]
print('(' + str(arr[p.first]) + ',' + str(arr[p.second]) + '),('
+ str(arr[i]) + ',' + str(arr[j]) + ')')
return True
j+=1
i+=1
return False
if __name__=='__main__':
arr = [3,4,7,10,20,9,8]
findPairs(arr)