题目描述
解题思路
此题网上有很多做法,这里只写出本人的解法,简单易懂。理解以下两点即可解出此题。
- 对于任意重M1和M2的两个砝码,能称出的重量最多为4个,即M1、M2、M1+M2、|M1-M2|,再具体运算中可先均求出来,然后去重。
- 对于任意N个砝码,我们可以看成前N-1个砝码的所有组合重量和最后一个砝码进行组合。打个比方,我们有3个砝码分别重1、2、4,我们先求出前两个砝码(重1、2)的组合重量为【1、2、3】,然后将【1、2、3】与4(第三个砝码的重量)进行组合。再具体的编码中可封装在一个方法中。
python代码
class Solution():
def fama(self,nums):
length=len(nums)
if length==0:
return False
arr=[]
arr.append(nums[0])
def getW(nums2,count):
length2=len(nums2)
for i in range(length2):
arr.append(nums2[i]+count)
if abs(nums2[i]-count)!=0:
arr.append(abs(nums2[i]-count))
arr.append(count)
new_arr=list(set(arr))
return new_arr
for i in range(1,length):
arr=getW(arr,nums[i])
return len(arr)
if __name__=="__main__":
n=int(input())
str=input()
nums=[int(m) for m in str.split()[0:n]]
temp=Solution()
print(temp.fama(nums))