HJ41 题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
#思路: #采用集合来存储不重复的可能的重量组合 #每次检查新的砝码加进来是否会产生新的重量 n=input() #存储砝码种类 m=input().split() for i in range(len(m)): m[i]=int(m[i]) #存储每种砝码数量 x=input().split() for i in range(len(x)): x[i]=int(x[i]) #存储所有的砝码 m1=[] for i in range(len(x)): for j in range(x[i]): m1.append(m[i]) #使用集合存储所有结果 ans={0}#最妙的是这个,集合元素初始为0,这样在下面就可以通过加和来得到添加的元素自身 for i in m1: for j in list(ans):#这里不要直接遍历ans集合,因为在遍历过程中往ans中添加元素会报错 ans.add(i+j) print(len(ans))#华为##华为od##华为机试##华为od机试#
华为HJ103所有解法 文章被收录于专栏
这是我准备华为od面试的专属专栏,我会把自己的解法更新在里面,我会尽量写清楚自己的思路以及多写关键注释,希望对阅读的人有帮助~~~