称砝码 现有一组砝码,重量互不相等

现有一组砝码,重量互不相等,分别为 m1,m2,m3 .mn ;
每种砝码对应的数量为 x1,x2,x3.xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。

注:

称重重量包括 0

本题有多组输入

数据范围:每组输入数据满足

img


#include<iostream>
#include<vector>
#include<algorithm>
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];
        vector<int> ans;
        for(int i=0;i<=num[0];i++){
            ans.push_back(i*weight[0]);
        }
        for(int j=1;j<n;j++){
            int size=ans.size();
            for(int i=1;i<=num[j];i++)
                for(int m=0;m<size;m++){
                    if(find(ans.begin(),ans.end(),ans[m]+i*weight[j])==ans.end())
                        ans.push_back(ans[m]+i*weight[j]);
            }
        }
        cout<<ans.size()<<endl;
    }
    return 0;
}