算法之递归-数组分组
1 #include<iostream> 2 #include<vector> 3 #include<math.h> 4 using namespace std; 5 vector<int> elsevec; 6 int n,m,sum3,sum5,dis0; 7 bool f(int i,int dis){ 8 if(i==elsevec.size()){ 9 return abs(dis)==dis0; 10 }return (f(i+1,dis+elsevec[i])||f(i+1,dis-elsevec[i])); //**重点** 11 } 12 int main(){ 13 while(cin>>n){ 14 sum3=sum5=0; 15 elsevec.clear(); 16 int t=n; 17 while(t--){ 18 cin>>m; 19 if(m%5==0){ 20 sum5+=m; 21 }else if(m%3==0){ 22 sum3+=m; 23 }else{ 24 elsevec.push_back(m); 25 } 26 }dis0=abs(sum5-sum3); 27 if(f(0,0)){ 28 cout<<"true"<<endl; 29 }else cout<<"false"<<endl; 30 } 31 return 0; 32 }
主要为了自己学习