题目:
给定一个包含若干个整数(可能存在重复整数)的列表,判断其中是否存在三个元素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))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)