首页 > 解决方案 > 如何打印以下程序的目标总和的不同对?

问题描述

在下面的程序中,我得到了这对重复的输出,你能帮我看看如何只打印唯一的对吗?

以下程序是将对打印到目标总和。我只需要得到“1 and 4”和“2 and 3”作为输出。我不应该在输出中得到“4 和 1”。

def printPairs(arr, n, sum): 
        for i in range(0, n ): 
            for j in range(i + 1, n ): 
                if (arr[i] + arr[j] == sum): 
                    print("", arr[i], " and ", arr[j], "", sep = "") 
    arr = [5,1,2,3,4,1,5] 
    n = len(arr) 
    sum = 5
    printPairs(arr, n, sum)

Current Output:
1 and 4
2 and 3
4 and 1

Required Output:
1 and 4
2 and 3

标签: pythonpython-3.x

解决方案


将对存储在一个集合中:

    def printPairs(arr, n, sum):
        pairs = set() 
        for i in range(0, n ): 
            for j in range(i + 1, n ): 
                if (arr[i] + arr[j] == sum):
                    if arr[i] in pairs or arr[j] in pairs:
                         continue
                    else:
                         print("", arr[i], " and ", arr[j], "", sep = "") 
                         pairs = pairs + {arr[i] + arr[j]}
    arr = [5,1,2,3,4,1,5] 
    n = len(arr) 
    sum = 5
    printPairs(arr, n, sum)

Current Output:
1 and 4
2 and 3
4 and 1

Required Output:
1 and 4
2 and 3

推荐阅读