解题思路
这是一个很简单的深搜。
依题意得每组最多 n 2 \frac{n}{2} 2n 个人,对于每个人无非有选和不选两种情况。
累计选的总和,用全部人的总和去减就得出了另一对的重量,取绝对值即可。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int t,n,a[50],lyx,ans;
void dfs(int dep,int x,int s){
if(x==n/2)
{
ans=min(ans,abs(lyx-s*2));
return;
}
if(dep>n)return;
dfs(dep+1,x+1,s+a[dep]);
dfs(dep+1,x,s);
}
int main(){
scanf("%d",&t);
while(t--)
{
ans=2147483600;
lyx=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
lyx+=a[i];
}
dfs(1,0,0);
printf("%d\n",ans);
}
}