python 0的组合

python 0的组合,第1张

题目:

给定一个包含若干个整数(可能存在重复整数)的列表,判断其中是否存在三个元素a,b,c,使得a+b+c=0?找出所有满足条件且不重复的这样的三个数的组合。


注意点】

  • 所给的数字是可以重复的,所给数字为1,1,-2,0,0,0
  • 组合是不可以重复的,即[1,-1,2]和[2,-1,1],算是重复的,应该删除
  • 可以借助集合去除重复

Input

输入格式:共一行,元素以空格隔开。


Output

输出格式:共一行,为不重复组合的个数,不存在这样的组合就输出0。


Sample Input 1 

-1 0 1 2 -1

Sample Output 1

2

正解

​
number=sorted(map(int,input().split()))
list=set()
for i in range(len(number)):
    for j in range(i+1,len(number)):
        for k in range(j+1,len(number)):
            if number[i] + number[j] + number[k] == 0:
                list.add((number[i], number[j], number[k]))
print(len(list))

​

错误思路:
错误分析:这种解法会导致存在重复的组合出现

number=sorted(map(int,input().split()))
list=set()
for i in range(len(number)-2):
    for j in range(1,len(number)-1):
        for k in range(2,len(number)):
            if number[i] + number[j] + number[k] == 0:
                list.add((number[i], number[j], number[k]))
print(len(list))

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/571767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存