python右对齐符号怎么按出来_程序找到了许多方法来排列符号以获取Python中的目标?...

假设我们有一个称为nums的非负数的列表,并且还有一个整数目标。我们必须找到以数字表示+和-的方式数目,以使表达式等于目标。

因此,如果输入像nums = [2,3,3,3,2] target = 9,那么输出将是2,因为我们可以拥有-2 + 3 + 3 + 3 + 2和2 + 3 + 3 + 3 – 2。

为了解决这个问题,我们将按照以下步骤操作:s:=所有数字的总和

如果(s +目标)mod 2与0不相同或target> s,则返回0

W:=(s +目标)/ 2的商

dp1:=大小(W + 1)的列表,并用0填充

dp1 [0]:= 1

dp2:=大小(W + 1)并填充0的列表

对于范围从0到nums的i,执行dp1 [j]:= dp1 [j] + dp2 [j]

dp2 [j]:= 0

如果j> = nums [i],则

dp2 [j]:= dp2 [j] + dp1 [j-nums [i]]

对于0到W + 1范围内的j

对于0到W + 1范围内的j

返回dp1的最后一个元素

让我们看下面的实现以更好地理解:

示例class Solution:

def solve(self, nums, target):

s = sum(nums)

if (s + target) % 2 != 0 or target > s:

return 0

W = (s + target) // 2

dp1 = [0] * (W + 1)

dp1[0] = 1

dp2 = [0] * (W + 1)

for i in range(len(nums)):

for j in range(W + 1):

if j >= nums[i]:

dp2[j] += dp1[j - nums[i]]

for j in range(W + 1):

dp1[j] += dp2[j]

dp2[j] = 0

return dp1[-1]

ob = Solution()nums = [2, 3, 3, 3, 2]

target = 9

print(ob.solve(nums, target))

输入值[2, 3, 3, 3, 2], 9

输出结果2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值