题解 | #称砝码#
称砝码
http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
#include <iostream> using namespace std; bool find(int sort[120000],int end,int number) { for(int i=0; i<end; i++) { if(sort[i] == number) { return true; } } return false; } int main() { int num1; while(cin>>num1) { //输入 int wight[num1]; for(int i=0; i<num1; i++) { cin>>wight[i]; } int number[num1]; for(int i=0; i<num1; i++) { cin>>number[i]; } int sort[120000]; sort[0] = 0; int tmp = 1; for(int i=0; i<num1; i++) { for(int j=0; j<number[i]; j++) { sort[tmp] = 0; int m = tmp; for(int k=0; k<m;k++) { if(!find(sort,tmp,sort[k]+wight[i])) { sort[tmp] = sort[k]+wight[i]; tmp ++; } } } } //输出 cout<<tmp<<endl; } return 0; }