思路:
这道题就直接搜索,把当前数加到第一队或第二队,最后求得时候判断就行了
c o d e code code
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int t;
int n, a[100100], ans;
void dfs(int x, int k1, int s1, int k2, int s2)
{
if(x>n)
{
if(abs(k1-k2)<=1)
{
if(abs(s1-s2)<ans)
ans=abs(s1-s2);
}
return;
}
dfs(x+1, k1+1, s1+a[x], k2, s2);
dfs(x+1, k1, s1, k2+1, s2+a[x]);
}
int main()
{
scanf("%d", &t);
while(t--)
{
ans=1e9;
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &a[i]);
dfs(1, 0, 0, 0, 0);
printf("%d\n", ans);
}
return 0;
}