Python基礎練習(三):0的組合

題目描述

題目內容:

給定一個包含若干個整數(可能存在重複整數)的列表,判斷其中是否存在三個元素a,b,c,使得a+b+c=0?找出所有滿足條件且不重複的這樣的三個數的組合。

輸入格式:

共一行,列表中元素以空格隔開。

輸出格式:

共一行,爲不重複組合的個數,不存在這樣的組合就輸出0

輸入樣例:

-1 0 1 2 -1

輸出樣例:

2

(注:兩個組合是-1,-1,2和-1,0,1)

時間限制:500ms內存限制:32000kb

解題思路

  1. 一個列表找出三個元素的組合,因此聯想到遍歷的方法
  2. 要求不能重複,我們可以對每一次遍歷的個數進行限制,即每次遍歷除上次遍歷的初始值以外的所有數;同時考慮到原始數據的無序性,可能出現週期循環情況,因此可以在遍歷之前對列表進行排序。
  3. 找出組合後我們可以把它作爲一個整體放到預設的一個空集合中,最後輸出的組合次數即爲集合的長度。(利用集合中不能出現相同元素這一特性)

解題代碼

a = sorted(list(map(int,input().split())))
l = len(a)
b = set()
for i in range(l):
    for j in range(i+1,l):
        for k in range(j+1,l):
            if a[i]+a[j]+a[k]==0:
                b.add((a[i],a[j],a[k]))
print(len(b))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章