永恒的蓝色梦想 发表于 2020-3-23 20:37
悬赏50,nb
一般的吧,我还有见过200
xiaomei47580 发表于 2020-3-24 13:23
看到50鱼币我滚了进来。。。看大佬答题
哈哈 哈
fan1993423 发表于 2020-3-23 21:49
解答错误
输入:nums = , s = 1
输出:8
预期结果:256
sjtuszy 发表于 2020-3-23 22:20
献丑一个简单的玩赖思路:
解答错误
输入:nums = , s = 1
输出:268
预期结果:256
@zltzlt 12楼已改
小马爱python 发表于 2020-3-25 16:59
大神太强了可以麻烦解析一下这个算法吗
一同学习,我也是初学者,只是做的题比较多
写C不香吗
本帖最后由 TJBEST 于 2020-3-25 21:52 编辑
zltzlt 发表于 2020-3-25 17:35
输入 nums = , s = 25...
楼主 我又写了一个,应该可以了,不是递归
def fun358(nums,s):
M = len(nums)
dic = dict()
if nums == 0:
dic = 2
else:
temp = nums
dic = 1
dic[-temp] = 1
for each in range(1,M):
dic_temp = dict()
temp = nums
for eachEle in dic:
if nums == 0:
try:
dic_temp = dic_temp + 2 * dic
except Exception:
dic_temp = 2 * dic
else:
try:
dic_temp = dic_temp + dic
except Exception:
dic_temp = dic
try:
dic_temp = dic_temp + dic
except Exception:
dic_temp = dic
dic = dic_temp
return dic
楼主,能不能测试一下16楼,谢谢。
直接用背包试试。
def T358(nums, s):
if sum(nums)<s or (s+sum(nums))%2: # 不可能成功,剪枝
return 0
n=int((s+sum(nums))/2)
dp=+*n
# 似乎是动态规划?背包?
for i in nums:
for j in range(n, i-1, -1): # 动态规划
dp=dp+dp
return dp
我恨不得用C或C++,都用惯了C++,转成Python费了点功夫
ouyunfu 发表于 2020-3-23 21:02
挑战一行代码
如果是python3.8版本,可以使用海象运算符“:=”,减少一次len函数的调用,代码如下:
第二段代码有语法错误哦
阴阳神万物主 发表于 2020-3-24 04:14
难度评级:中等
要素分析:算法 效率
感受:问题可以转化为对所有数字的符号做规划的二进制问题。
输入 nums = , s = 38 超时
阴阳神万物主 发表于 2020-3-24 04:48
这个的时间复杂度(算上定义的二进制数据自增函数)应当是 (2**n)*n
输入 nums = , s = 1 超时
蒋博文 发表于 2020-3-24 09:24
本帖最后由 蒋博文 于 2020-3-24 09:58 编辑
84 ms
flamezyy 发表于 2020-3-24 09:29
先来个递归的
输入 nums = , s = 1 出错
mdphd 发表于 2020-3-24 09:45
暴力破解
尝试优化算法遇阻,只能暴力
输入 nums = , s = 0 超时
l0stparadise 发表于 2020-3-24 14:01
动态规划学习中,感觉好难
解答错误
输入:nums = , s = 1
输出:1
预期结果:256
NAMELESSONE 发表于 2020-3-24 15:41
解答错误
输入:nums = , s =1
输出:1
预期结果:2
776667 发表于 2020-3-24 17:25
输入以下数据超时:
nums =
s = 1