题解 | #称砝码#

称砝码

http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

#include <bits/stdc++.h>
using namespace std;
int main ()
{
    int n; cin >> n; 
    int weight[10],nums[10];   //最多10种砝码
    for(int i = 0; i < n; i++)  cin >> weight[i]; //重量
    for(int i = 0; i < n; i++)  cin >> nums[i]; //个数
    
    set<int> S,Stmp;
    S1.insert(0);    //0一定要先加进去(第一轮里只有1个0),不然后面漏掉很多组合
    for(int i = 0; i < n; i++)
    {    
        Stmp = S;   //  用上一轮的S里的每个重量加上下一组砝码的所有重量组合
        for(int j = 1; j <= nums[i]; j++)
        {    
            for(auto itr = Stmp.begin();itr!=Stmp.end();++itr)
                S.insert(*itr + weight[i] * j);
        }
    }
    cout<<S.size();
    return 0;
}
全部评论

相关推荐

LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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