题解 | #称砝码#

称砝码

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

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

int main() {
    int n;
    while (cin >> n) {
        vector<int> weight(n);
        vector<int> kind(n);
        set<int> used;//存储所有可能的结果
        for (int i = 0; i < n; i++) {
            cin >> weight[i];
        }
        for (int i = 0; i < n; i++) {
            cin >> kind[i];
        }
        used.insert(0);//包含0这种情况
        //重量
        for (int i = 0; i < n; i++) {
            //每个砝码对应的个数
            for (int j = 1; j <= kind[i]; j++) 
            {
                set<int> t(used);//将已有的结果与现在砝码结合组成新的可能
                for (auto it = t.begin(); it != t.end(); it++) {
                    used.insert(*it + weight[i]);
                }
            }
           
        }
         cout << used.size() << endl;
        
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 13:38
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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