标签:
算法本身效率很低,但感觉比较简洁,所以自己记录了下。华为的测试用例才一个,通过是通过了,但觉得根本没法检查这段程序的正确性,个人觉得逻辑上没错。
1 #include <iostream> 2 #include <set> 3 #include <algorithm> 4 5 using namespace std; 6 7 int fama(int n,int* weight,int* nums) 8 { 9 set<int> setInt; 10 setInt.insert(0); 11 for(int i=0;i<n;i++) 12 { 13 int w=weight[i]; 14 set<int> setTemp; 15 set<int>::iterator bitr=setInt.begin(); 16 set<int>::iterator eitr=setInt.end(); 17 for(set<int>::iterator p=bitr;p!=eitr;p++) 18 { 19 int wt=*p; 20 for(int count=0;count<=nums[i];count++) 21 { 22 int twt=wt+w*count; 23 setTemp.insert(twt); 24 } 25 } 26 setInt.insert(setTemp.begin(),setTemp.end()); 27 } 28 return static_cast<int>(setInt.size()); 29 } 30 31 int main() 32 { 33 int* weight; 34 int* nums; 35 int n; 36 cin>>n; 37 38 weight=new int[n]; 39 nums=new int[n]; 40 41 for(int i=0;i<n;i++) 42 cin>>weight[i]; 43 44 for(int i=0;i<n;i++) 45 cin>>nums[i]; 46 47 cout<<fama(n,weight,nums)<<endl; 48 49 }
标签:
原文地址:http://www.cnblogs.com/lsr-flying/p/4775839.html