在网上没找到组织的我。。。
多少道选择题忘了 两道编程题 一道AC 一道28多 求指教
第一道 求列表内三个元素之和等于一个target 求个数
(匆匆忙忙有点乱 没整理 通过就好 哈哈)
枚举只能80% 这应该是卡时间了吧
我的思路就是把列表一个塞进set 一个塞进字典
先考虑三个数各不相同 用的枚举
再考虑有两个数相同 三个或三个以上数相同
import sys from collections import Counter if __name__=="__main__": a = list(sys.stdin.readline().strip().split(',')) a = [int(i) for i in a] a_s = list(set(a[1:])) a_d = dict(Counter(a[1:])) count = 0 for i in range(0,len(a_s)): for j in range(i+1,len(a_s)): for k in range(j+1,len(a_s)): if a_s[i]+a_s[j]+a_s[k] == a[0]: count+=a_d[a_s[i]]*a_d[a_s[j]]*a_d[a_s[k]] for i in a_d: if a_d[i] == 2: for j in a_s: if 2*i + j == a[0] and i!=j: count+=a_d[j] if a_d[i] >= 3: if 3*i == a[0]: c = 1 for j in range(3): c *= a_d[i]-j c = c//6 count += c for j in a_s: if 2*i + j == a[0] and i!=j: c = 1 for k in range(2): c*=a_d[i]-k c = c//2 count+=c*a_d[j] print(count)
第二道 打副本
profit_list = [1,2,3,4,5]
随意位置开始 开始跳跃 不能相邻 求最大利益
我不造是不是可以一下子跨两个 要是不可以的话 我的想法就是建个二叉树 递归求和 奈何时间不够 功底不足
也不造有没有负数😔
全部评论
(8) 回帖