Description–
解题思路–
暴搜
代码–
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int t, n, a[50], ans;
void dfs(int lev, int x, int y, int xy)
{
if (lev > n)
{
ans = min (ans, abs(xy));
return ;
}
if (x < n / 2 + (n & 1))
dfs(lev + 1, x + 1, y, xy + a[lev]);
if (y < n / 2 + (n & 1))
dfs(lev + 1, x, y + 1, xy - a[lev]);
}
void work()
{
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
ans = 1000;
dfs(1, 0, 0, 0);
printf("%d\n", ans);
}
int main()
{
scanf("%d", &t);
for (int i = 1; i <= t; ++i)
work();
return 0;
}