题解 | #称砝码#
称砝码
http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
#include<iostream>
#include<set>
using namespace std;
//利用set中元素不重复的性质,将模拟得到的重量都加入set
int main(){
int n;
while(cin>>n){
int m[n],x[n];
for(int i=0;i<n;i++){
cin>>m[i];
}
for(int i=0;i<n;i++){
cin>>x[i];
}
set<int>heft;
heft.insert(0);//题目说了0也算一种
//先遍历种类,并记录当前集合中的重量
//再遍历个数得到重量增量可能的值
//最内层遍历当前集合,将所有重量与增量的和加入集合
for(int i=0;i<n;i++){
set<int> temp(heft);
for(int j=1;j<=x[i];j++){
for(auto it=temp.begin();it!=temp.end();it++){
heft.insert(*it+m[i]*j);
}
}
}
cout<<heft.size()<<endl;
}
return 0;
}