python - 如何打印以下程序的目标总和的不同对?
问题描述
在下面的程序中,我得到了这对重复的输出,你能帮我看看如何只打印唯一的对吗?
以下程序是将对打印到目标总和。我只需要得到“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
解决方案
将对存储在一个集合中:
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
推荐阅读
- powershell - 监控和复制到多个位置
- angular - 角度动态数据的国际化
- mysql - mysql分区自动化
- java - Kotlin + SpringBoot:DI lateinit 属性服务尚未初始化
- .net - 我可以从构建配置中排除命名空间(即 Name1.Name2)吗
- firebase - 具有许多值的数组的集合
- java - RecyclerView 项目中的 ProgressBar 在 notifyDataSetChanged 上没有动画
- qt - 在析构函数中终止 QProcess
- jspdf - html2canvas:无法将 fullcalendar-scheduler 生成为 pdf
- ibm-cloud - 如何为 IBM Cloud 中的供应服务获取有意义的别名或名称?