大概是3年前,我正是大一, 写下了这篇 http://www.cnblogs.com/zhangsan/archive/2010/06/28/1767000.html 文章
但解法是错误的, 一直没来填这个坑.
做不久在做checkio, 正好遇到这道题目, 想起此事, 变过来贴一下正确解法.
下面是我的解法, 如果有不对地方, 欢迎指出.
1 def checkio(data): 2 sorted_list = sorted(data,reverse=True) 3 sum_l = sum(sorted_list) 4 half_sum = sum_l/2 5 def get_close(alist,n): 6 for index,number in enumerate(alist): 7 if number <= n: 8 yield number + max(get_close(alist[index+1:],n-number)) 9 yield 0 10 11 max_half = max(get_close(sorted_list,half_sum)) 12 return sum_l-2*max_half