|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2020-1-22 14:17 编辑
今天的题目:
给定一个数组,返回数组中的所有子数组之和。
说明:如果数组为 [2, 4, 1],则该数组所有的子集是 [[2], [4], [1], [2, 4], [4, 1], [2, 4, 1]]。
示例 1:
输入:[1, 2, 3]
输出:20
解释:(1) + (2) + (3) + (2 + 3) + (1 + 2) + (1 + 2 + 3) = 20
示例 2:
输入:[1, 2]
输出:6
解释:(1) + (2) + (1 + 2) = 6
 欢迎大家一起答题! 
上一题不会,这一题我用递归来解决吧。实在看不懂你们的高深的方法。 - def func312(array):
- l = len(array)
- res = 0
- if l == 1:
- res = array[0]
- elif l == 2:
- res = array[0] + array[1] + (array[0] + array[1])
- else:
- res = func312(array[:(l-1)])
- for i in range(0, l):
- res += add(array[i:])
- #递归法解决该问题,每添加一个元素,多出来的数组统统加一遍
- return res
- def add(array):
- res = 0
- for each in array:
- res += each
- return res
- print('array [1, 2, 3]的答案是: ', func312([1, 2, 3]))
- print('array [1, 2]的答案是: ', func312([1, 2]))
- print('array [5, 2, 8, 4, 2]的答案是: ', func312([5, 2, 8, 4, 2]))
复制代码
|
|