题解 | #称砝码#

称砝码

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

全部评论

相关推荐

ResourceUtilization:差不多但是估计不够准确,一面没考虑到增长人口,另一方面也没考虑到能上大学的人数比例,不过我猜肯定只多不少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务