鱼C论坛

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

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

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

输入以下数据超时:

  1. nums = [35, 25, 24, 23, 2, 47, 39, 22, 3, 7, 11, 26, 6, 30, 5, 34, 10, 43, 41, 28]
  2. s = 49
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-26 17:24:32 | 显示全部楼层
whosyourdaddy 发表于 2020-3-24 18:22
def func358(nums,s):
    if sum(nums)

解答错误

输入:
  1. nums = [1, 0], s = 1
复制代码

输出:1
预期结果:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-26 17:25:40 | 显示全部楼层
旅途Z 发表于 2020-3-24 19:25
import itertools
import numpy as np

输入以下数据超时:

  1. nums = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], s = 0
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-26 17:27:36 | 显示全部楼层
suchocolate 发表于 2020-3-24 19:59
我的思路:
1)全是+号算一下:
2)全是-号算一下:

输入以下数据超时:

  1. 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
最佳答案
2848 
 楼主| 发表于 2020-3-26 17:31:13 | 显示全部楼层

输入以下数据超时:

  1. 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
最佳答案
2848 
 楼主| 发表于 2020-3-26 17:32:23 | 显示全部楼层

输入以下数据报错:

  1. 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
最佳答案
2848 
 楼主| 发表于 2020-3-26 17:33:10 | 显示全部楼层
TJBEST 发表于 2020-3-25 21:13
楼主 我又写了一个,应该可以了,不是递归

输入以下数据报错:

  1. nums = [1], s = 2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-26 17:33:38 | 显示全部楼层
lawsonwang 发表于 2020-3-26 08:36
直接用背包试试。

140 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
33 
发表于 2020-3-26 17:44:31 | 显示全部楼层
zltzlt 发表于 2020-3-26 17:33
输入以下数据报错:

已改
  1. def fun358(nums,s):
  2.     M = len(nums)
  3.     dic = dict()
  4.     if nums[0] == 0:
  5.         dic[0] = 2
  6.     else:
  7.         temp = nums[0]
  8.         dic[temp] = 1
  9.         dic[-temp] = 1
  10.     for each in range(1,M):
  11.         dic_temp = dict()
  12.         temp = nums[each]
  13.         for eachEle in dic:
  14.             if nums[each] == 0:
  15.                 try:
  16.                     dic_temp[eachEle] = dic_temp[eachEle] + 2 * dic[eachEle]
  17.                 except Exception:
  18.                     dic_temp[eachEle] = 2 * dic[eachEle]
  19.             else:
  20.                 try:
  21.                     dic_temp[eachEle + temp] = dic_temp[eachEle + temp] + dic[eachEle]
  22.                 except Exception:
  23.                     dic_temp[eachEle + temp] = dic[eachEle]
  24.                 try:
  25.                     dic_temp[eachEle - temp] = dic_temp[eachEle - temp] + dic[eachEle]
  26.                 except Exception:
  27.                     dic_temp[eachEle - temp] = dic[eachEle]
  28.         dic = dic_temp
  29.     try:
  30.         return dic[s]
  31.     except:
  32.         return 0
复制代码

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
28 
发表于 2020-3-26 17:55:40 | 显示全部楼层
  1. def fun358(nums,s):
  2.     if 0 in nums:
  3.         count0=pow(2,nums.count(0))
  4.         nums=list(filter(lambda x:x,nums))
  5.     else:
  6.         count0=1
  7.     if not nums:
  8.         if not s:
  9.             return count0
  10.         else:
  11.             return 0
  12.     if len(nums)==1:
  13.         if nums[0]==s or nums[0]==-s:
  14.             return count0
  15.         else:
  16.             return 0
  17.     nums.reverse()
  18.     result=0
  19.     def recursion(nums,s):
  20.         nonlocal result,count0
  21.         if len(nums)==1:
  22.             if nums[0]==s or nums[0]==-s:
  23.                 result+=1
  24.                 return result
  25.             else:
  26.                 return result
  27.         s+=nums[0]
  28.         if sum(nums[1:])>s:
  29.             recursion(nums[1:],s)+recursion(nums[1:],s-nums[0]*2)
  30.         elif sum(nums[1:])==s:
  31.             result+=1
  32.             return recursion(nums[1:],s-nums[0]*2)
  33.         else:
  34.             return recursion(nums[1:],s-nums[0]*2)
  35.         return result
  36.     return recursion(nums,s)*count0
复制代码

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
28 
发表于 2020-3-26 17:56:39 | 显示全部楼层
@zltzlt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
22 
发表于 2020-3-26 22:48:31 | 显示全部楼层
楼主,请问最近咋没有题了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
119 
发表于 2020-3-27 09:34:35 | 显示全部楼层
zltzlt 发表于 2020-3-26 17:27
输入以下数据超时:


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

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-27 12:49:06 | 显示全部楼层
suchocolate 发表于 2020-3-27 09:34
超时是指超时后没有相应吗,我这里ok的,虽然时间比较长。

超时是用时太长的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-27 18:31:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-27 18:32:06 | 显示全部楼层

要加了好友后再 @ 才有用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2848 
 楼主| 发表于 2020-3-27 18:33:22 | 显示全部楼层

输入以下数据超时:

  1. 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
最佳答案
28 
发表于 2020-3-27 18:35:51 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:33
输入以下数据超时:

我这边很快显示5381这个结果,还是超时了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
28 
发表于 2020-3-27 18:36:26 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:33
输入以下数据超时:

在测一下,是不是有什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
119 
发表于 2020-3-28 12:13:43 | 显示全部楼层
蒋博文 发表于 2020-3-23 18:37
本帖最后由 蒋博文 于 2020-3-24 09:58 编辑

hello
可以讲解一下程序的逻辑思路吗,我们学习学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2020-10-21 06:34

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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