题目链接
题目描述
解题思路
暴力,两个map,分别存储当前能称出的重量和遍历时用于计算的重量
需要注意的三点是
- abs函数是在math.h里面的
- auto类型用不了,如果要迭代器遍历,需要完整的写出迭代器,具体写法为
容器类型::iterator
如:
map<int,int>::iterator it;
- 注意判断一下当砝码组成为0的时候,秤不出任何重量,也就是ma[0]的时候,这时候如果存在,需要减去等于0的情况
题解
#include<iostream>
#include<map>
#include<math.h>
using namespace std;
map<int,int> ma;
map<int,int> temp;
int main(){
int n;
scanf("%d",&n);
int data;
for(int i=0;i<n;i++){
scanf("%d",&data);
for(map<int,int>::iterator it=temp.begin();it!=temp.end();it++){
ma[abs(it->first-data)]++;
ma[abs(it->first+data)]++;
}
ma[data]++;
temp=ma;
}
int sum=ma.size();
if(ma[0]!=0) sum--;
printf("%d",sum);
}