1. 程式人生 > >python練習題,寫一個方法 傳進去列表和預期的value 求出所有變量得取值可能性(例如list為[1,2,3,4,5,6,12,19],value為20,結果是19+1==20只有一種可能性),要求時間復雜度為O(n)

python練習題,寫一個方法 傳進去列表和預期的value 求出所有變量得取值可能性(例如list為[1,2,3,4,5,6,12,19],value為20,結果是19+1==20只有一種可能性),要求時間復雜度為O(n)

num bubuko com pri def 代碼 data- 取值 .com

題目:(來自光榮之路老師)
a+b==value
a+b+c=value
a+b+c+d==value
a+b+c+d+...=value
a和b....取值範圍都在0-value
寫一個方法 傳進去列表和預期得value 求出所有變量得取值可能性

一個有順序得數字序列 從小到大 不限制個數 序列裏面隨機兩個數相加為value得可能性
例子[1,2,3,4,5,6,12,19] value為20
19+1==20只有一種可能性
要求時間復雜度為O(n)

代碼:

#encoding=utf-8

seq=[1,19,4,16,54,32,12,56,43,87,12]
value = 20
def fun(seq,value):
print "seq:",seq
print "value:",value
num=0
try:
list=sorted(seq)
cur=[]
for i in range(len(list)-1):
data=value

list1=list[:]
list1.remove(list[i])
#print "list:",list
#print "list1:",list1
#print "list[i]:",list[i]
if (data - list[i]) in list1 and (data -list[i]) not in cur:
print list[i],data-list[i]
cur.append(list[i])
cur.append(data-list[i])
num+=1
print "there a %s curcumstance!" %num
except Exception,e:
raise e

fun(seq,value)

結果:ok

D:\測試資料\python課件\Python筆記>python task_test.py
seq: [1, 19, 4, 16, 54, 32, 12, 56, 43, 87, 12]
value: 20
1 19
4 16
there a 2 curcumstance!

技術分享圖片

python練習題,寫一個方法 傳進去列表和預期的value 求出所有變量得取值可能性(例如list為[1,2,3,4,5,6,12,19],value為20,結果是19+1==20只有一種可能性),要求時間復雜度為O(n)