题解 | 这个题目不好写
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
#include <iostream> #include <map> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int numsx1[10]; int numsm1[10]; int main(int argc, char** argv) { map<int,int> m1; int n1; while(cin>>n1) { // int weight1=0; for(int i=0;i<n1;++i) { cin>>numsm1[i]; } for(int i=0;i<n1;++i) { cin>>numsx1[i]; } for(int i=0;i<n1; ) { if(0<numsx1[i]) { --numsx1[i]; auto m2=m1; for(auto x1:m2) { //cout<<x1.first+numsm1[i]<<" "; m1[x1.first+numsm1[i]]=1; } m1[numsm1[i]]=1; //cout<<numsm1[i]<<" "; } else { ++i; } } // int ans1; // for(auto x1:m1) // { // // } cout<<m1.size()+1<<endl; } return 0; }