1. 程式人生 > >Python “最短”挑戰(12.16)

Python “最短”挑戰(12.16)

Python “最短”挑戰(12.16)

Description

有n根棍子,想要從中選出3根棍子組成周長儘可能長的三角形。請輸出最大的周長,若無法組成三角形則輸出0.
例如,對於[5,4,10,2,3],有3+4+5=12,且沒有其他更大的周長,則輸出12;對於[4,10,20,30],不存在三個數能組成三角形,則輸出0.

Input

兩行,第一行一個數n
第二行n個數代表n根棍子的長。

Output

最大周長或0
其餘要求同首題

參考程式碼

def
main(n,li,i=0,j=1,k=2):return 0 if i==n else main(n,li,i,j+1,j+2) if k==n else main(n,li,i+1,i+2,i+3) if j==n else li[i]+li[j]+li[k] if li[j]+li[k]>li[i] else main(n,li,i,j,k+1) n,li=int(input()),sorted(list(map(int,input().split())),reverse=True) print(main(n,li)) ''' def main(n,li): for i in range(n): for j in range(i+1,n): for k in range(j+1,n): if li[j]+li[k]>li[i]: return li[i]+li[j]+li[k] return 0 '''