|
发表于 2020-3-25 21:13:52
|
显示全部楼层
本帖最后由 TJBEST 于 2020-3-25 21:52 编辑
zltzlt 发表于 2020-3-25 17:35
输入 nums = [31, 4, 45, 3, 44, 49, 28, 6, 22, 24, 40, 25, 13, 46, 17, 10, 2, 38, 25, 15], s = 25 ...
楼主 我又写了一个,应该可以了,不是递归
- def fun358(nums,s):
- M = len(nums)
- dic = dict()
- if nums[0] == 0:
- dic[0] = 2
- else:
- temp = nums[0]
- dic[temp] = 1
- dic[-temp] = 1
- for each in range(1,M):
- dic_temp = dict()
- temp = nums[each]
- for eachEle in dic:
- if nums[each] == 0:
- try:
- dic_temp[eachEle] = dic_temp[eachEle] + 2 * dic[eachEle]
- except Exception:
- dic_temp[eachEle] = 2 * dic[eachEle]
- else:
- try:
- dic_temp[eachEle + temp] = dic_temp[eachEle + temp] + dic[eachEle]
- except Exception:
- dic_temp[eachEle + temp] = dic[eachEle]
- try:
- dic_temp[eachEle - temp] = dic_temp[eachEle - temp] + dic[eachEle]
- except Exception:
- dic_temp[eachEle - temp] = dic[eachEle]
- dic = dic_temp
- return dic[s]
复制代码 |
评分
-
查看全部评分
|