zb的生日
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <cmath> 6 using namespace std; 7 int w[30],vis[30]; //w表示重量 8 int n,sum,ans,mim,m; //sum表示总重量,ans表示分给甲的重量。m表示分给乙的重量,mim表示最小结果 9 10 void dfs(int cur) 11 { 12 if(cur==n) 13 { 14 m=sum-ans; 15 if(abs(m-ans)<mim) 16 { 17 mim=abs(m-ans); 18 } 19 } 20 else 21 { 22 for(int i=cur;i<n;i++) 23 { 24 ans+=w[i]; 25 vis[i]=1; 26 dfs(i+1); 27 vis[i]=0; 28 ans-=w[i]; 29 } 30 } 31 } 32 int main() 33 { 34 int k; 35 while(~scanf("%d",&n)) 36 { 37 sum=ans=0; 38 mim=100000; 39 for(int i=0;i<n;i++) 40 { 41 scanf("%d",&w[i]); sum+=w[i]; 42 } 43 memset(vis,0,sizeof(vis)); 44 if(n==1) 45 { 46 printf("%d\n",w[0]); continue; 47 } 48 else 49 { 50 if(n==2) 51 { 52 printf("%d\n",abs(w[0]-w[1])); continue; 53 } 54 else 55 dfs(0); 56 } 57 printf("%d\n",mim); 58 } 59 return 0; 60 } 61