首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python与int相乘

Python与int相乘
EN

Stack Overflow用户
提问于 2021-03-15 15:42:12
回答 1查看 49关注 0票数 0

代码:

代码语言:javascript
复制
from collections import Counter

class Solution(object):
   def combinationSum(self, candidates, target):
      result = []
      unique={}
      candidates = list(set(candidates))
      self.solve(candidates,target,result,unique)
      return result
   def solve(self,candidates,target,result,unique,i = 0,current=[]):
      if target == 0:
         temp = [i for i in current]
         temp1 = temp
         temp.sort()
         temp = tuple(temp)
         if temp not in unique:
            unique[temp] = 1
            result.append(temp1)
         return
      if target <0:
         return
      for x in range(i,len(candidates)):
         current.append(candidates[x])
         self.solve(candidates,target-candidates[x],result,unique,i,current)
         current.pop(len(current)-1)
ob1 = Solution()
X = 2500
Y = 7500
x1 = 700
y1 = 2950
sol = (ob1.combinationSum([X,Y],40000))
for i in sol:
    x = (Counter(i))
    print(x)

输出:

代码语言:javascript
复制
Counter({2500: 16})
Counter({2500: 13, 7500: 1})
Counter({2500: 10, 7500: 2})
Counter({2500: 7, 7500: 3})
Counter({2500: 4, 7500: 4})
Counter({7500: 5, 2500: 1})

我需要做的是多个&如果值为X,则由x1返回出现的情况;如果值为Y,则返回y1。在如何获得以下输出方面,我有点拘泥于此。有什么帮助吗?

前任:

代码语言:javascript
复制
**Counter({2500: 16}, 11,200  (700*16))
Counter({2500: 13, 7500: 1}, 12,050  ((13*700)+(1*2950)))
Counter({2500: 10, 7500: 2}, 12,900)
Counter({2500: 7, 7500: 3}, 13,750)
Counter({2500: 4, 7500: 4}, 14,600)
Counter({7500: 5, 2500: 1}, 15,450)**
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-15 15:51:19

创建一个dict来映射您的权重,按该地图中的键对计数进行加权,并将它们加起来:

代码语言:javascript
复制
weights = {X: x1, Y: y1}    
for i in sol:
    x = Counter(i)
    xsum = sum(counts * weights[key] for key, counts in x.items())
    print(x, xsum)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66641147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档