鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[已解决]Python:每日一题 358

[复制链接]
 楼主| 发表于 2020-3-26 17:23:06 | 显示全部楼层

输入以下数据超时:
nums = [35, 25, 24, 23, 2, 47, 39, 22, 3, 7, 11, 26, 6, 30, 5, 34, 10, 43, 41, 28]
s = 49
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-26 17:24:32 | 显示全部楼层
whosyourdaddy 发表于 2020-3-24 18:22
def func358(nums,s):
    if sum(nums)

解答错误

输入:
nums = [1, 0], s = 1
输出:1
预期结果:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-26 17:25:40 | 显示全部楼层
旅途Z 发表于 2020-3-24 19:25
import itertools
import numpy as np

输入以下数据超时:
nums = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], s = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-26 17:27:36 | 显示全部楼层
suchocolate 发表于 2020-3-24 19:59
我的思路:
1)全是+号算一下:
2)全是-号算一下:

输入以下数据超时:
nums = [2, 20, 24, 38, 44, 21, 45, 48, 30, 48, 14, 9, 21, 10, 46, 46, 12, 48, 12, 38], s = 48
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-26 17:31:13 | 显示全部楼层

输入以下数据超时:
nums = [29, 6, 7, 36, 30, 28, 35, 48, 20, 44, 40, 2, 31, 25, 6, 41, 33, 4, 35, 38], s = 35
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-26 17:32:23 | 显示全部楼层

输入以下数据报错:
nums = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], s = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-26 17:33:10 | 显示全部楼层
TJBEST 发表于 2020-3-25 21:13
楼主 我又写了一个,应该可以了,不是递归

输入以下数据报错:
nums = [1], s = 2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-26 17:33:38 | 显示全部楼层
lawsonwang 发表于 2020-3-26 08:36
直接用背包试试。

140 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-26 17:44:31 | 显示全部楼层
zltzlt 发表于 2020-3-26 17:33
输入以下数据报错:

已改
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
    try:
        return dic[s]
    except:
        return 0

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-26 17:55:40 | 显示全部楼层
def fun358(nums,s):
    if 0 in nums:
        count0=pow(2,nums.count(0))
        nums=list(filter(lambda x:x,nums))
    else:
        count0=1
    if not nums:
        if not s:
            return count0
        else:
            return 0
    if len(nums)==1:
        if nums[0]==s or nums[0]==-s:
            return count0
        else:
            return 0
    nums.reverse()
    result=0
    def recursion(nums,s):
        nonlocal result,count0
        if len(nums)==1:
            if nums[0]==s or nums[0]==-s:
                result+=1
                return result
            else:
                return result
        s+=nums[0]
        if sum(nums[1:])>s:
            recursion(nums[1:],s)+recursion(nums[1:],s-nums[0]*2)
        elif sum(nums[1:])==s:
            result+=1
            return recursion(nums[1:],s-nums[0]*2)
        else:
            return recursion(nums[1:],s-nums[0]*2)
        return result
    return recursion(nums,s)*count0

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-26 17:56:39 | 显示全部楼层
@zltzlt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-26 22:48:31 | 显示全部楼层
楼主,请问最近咋没有题了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 09:34:35 | 显示全部楼层
zltzlt 发表于 2020-3-26 17:27
输入以下数据超时:


超时是指超时后没有相应吗,我这里ok的,虽然时间比较长。

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-27 12:49:06 | 显示全部楼层
suchocolate 发表于 2020-3-27 09:34
超时是指超时后没有相应吗,我这里ok的,虽然时间比较长。

超时是用时太长的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-27 18:31:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-27 18:32:06 | 显示全部楼层

要加了好友后再 @ 才有用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-27 18:33:22 | 显示全部楼层

输入以下数据超时:
nums = [11, 31, 37, 36, 43, 40, 50, 18, 10, 15, 10, 35, 43, 25, 41, 43, 6, 22, 38, 38], s = 44
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 18:35:51 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:33
输入以下数据超时:

我这边很快显示5381这个结果,还是超时了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 18:36:26 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:33
输入以下数据超时:

在测一下,是不是有什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-28 12:13:43 | 显示全部楼层
蒋博文 发表于 2020-3-23 18:37
本帖最后由 蒋博文 于 2020-3-24 09:58 编辑

hello
可以讲解一下程序的逻辑思路吗,我们学习学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 20:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表