|
|
发表于 2020-3-24 04:48:44
|
显示全部楼层
本帖最后由 阴阳神万物主 于 2020-3-24 04:51 编辑
这个的时间复杂度(算上定义的二进制数据自增函数)应当是 (2**n)*n
- def solve_2(nums:'list of int>=0',s:int)->int:
- res = 0
- r = len(nums)
- class B(list):
- def __init__(self):
- list.__init__(self,(0,))
- def add(self):
- i = -1
- while 1:
- i += 1
- try:
- if self[i]:self[i] = 0
- else:self[i] += 1;return
- except IndexError:
- self.append(1)
- return
- def getl():
- l = B()
- while len(l)<=r:
- yield l
- l.add()
- for l in getl():
- su = 0
- for i in range(len(l)):su += nums[i] if l[i] else -nums[i]
- if su < s:continue
- while (i := i+1)<r:
- su -= nums[i]
- if su == s:
- print(l)
- res += 1
- return res
- if __name__ == '__main__':
- print('示例 输出:',solve_2([1]*5,3))
复制代码 |
评分
-
查看全部评分
|