算法之递归-数组分组

 

 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 } 

 

posted @ 2022-02-24 22:37  技术笔记记录  阅读(92)  评论(0)    收藏  举报