题解 | #称砝码#

称砝码

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;
}

全部评论

相关推荐

04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务