题解 | #称砝码#

称砝码

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

#include <iostream>
#include <vector>
#include <set>
using namespace std;

int main() {
    int n;
    while(cin >> n)  //砝码的总数
    {
        vector<int> weight(n);
        vector<int> num(n);
        for (int i = 0;i < n;i++)
        {
            cin >> weight[i];
        }
        for (int i = 0;i < n;i++)
        {
            cin >> num[i];
        }

        set<int> all_weight;
        all_weight.insert(0);
        for (int i = 0;i < n;i++)
        {
            for (int j = 1;j <= num[i];j++)
            {
                set<int> temp(all_weight);  //防止循环过程中修改all_weight中的成员
                for (auto it = temp.begin();it != temp.end();it++)
                {
                    all_weight.insert(*it + weight[i]);   //先把其中一类的砝码,按照数量放进去(比如有两个1克的砝码,第一次循环先放入1个1克的,第二次循环放入两个1克的,在放入下一类的砝码,将上一次得到的砝码重量加上新砝码的重量)
                }
            }
        }
        cout << all_weight.size();
    }
}

//1k 2k 3k(1个1k+1个2k) 4k(2个1k+1个2k) 
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

07-14 12:29
门头沟学院 Java
后端岗,实习三周感觉有点想跑路了,担心秋招被拉黑,有没有佬是字节HR知道情况的
从零开始的转码生活:你实习三周都想跑路,将来拿到offer真的愿意在这干十几二十年吗
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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