![](/img/trans.png)
[英]how to print elements of a list whose sum is equal to a given number in python?
[英]python - print the sum of items in list whose total is the largest and is odd
這是我一直試圖解決的一個簡單問題。 首先,我輸入一個正整數列表。 我想從他們中選擇項目,使他們的總數最大可能,他們的總和是奇數。 如果沒有可能的組合,我想打印-1
。 我編寫了代碼,但它無法正常工作。
l = sorted(list(map(int, input().split())))
if sum(l)%2 == 1:
print(sum(l))
else:
m = 0
for x in range(len(l)):
a = l
a.pop(x)
if sum(a)%2 == 1 and sum(a) > m:
m = sum(a)
例如,對於輸入2 3 4 5
,它打印9
應打印11
。
任何幫助,將不勝感激。
因此,從數字列表中,您希望獲得最大可能的總和,這是奇數。 這實際上非常簡單,可以很容易地解決。 您需要做的是獲取所有數字的總和,因為這是您可以從這些數字中獲得的最大總和。 現在,我們有兩個選擇:
在代碼中,這可能如下所示:
def largestOddSum(numbers):
s = sum(numbers)
if s % 2 == 1:
return s
for x in sorted(numbers):
if x % 2 == 1:
return s - x
return -1
像這樣使用:
>>> largestOddSum([2, 3, 4, 5])
11
一個簡單的方法:加上所有並減去最小奇數,如果第一個和是偶數:
if sum(l)%2 == 1:
print(sum(l))
else:
print(sum(l) - [i for i in sorted(l) if i%2==1][0])
我認為解決這個問題的最佳方法是記住:
even + even = even
odd + even = odd
odd + odd = even
考慮到這一點,您始終可以包含所有偶數。 您也可以始終包含所有奇數,只要奇數的數量不均勻即可。 如果賠率是偶數,那么就把最小的賠率留下來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.