直接暴力就过了哈哈
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int a[25],vis[25],T,N,flag,len;
void dfs(int sum,int n,int cnt)
{
if(flag || sum>len) return;
if(sum==len)
{
if(cnt==3) flag=1;
else dfs(0,N-1,cnt+1);
return ;
}
while(n>=0 && vis[n]) n--;
if(n<0) return ;
vis[n]=1;
dfs(sum+a[n],n-1,cnt);
vis[n]=0;
dfs(sum,n-1,cnt);
}
int main()
{
// freopen("test.txt","r",stdin);
scanf("%d",&T);
while(T--)
{
int sum=0;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,a+N);
int ans=0;
if(sum%4==0)
{
memset(vis,0,sizeof(vis));
len=sum/4;flag=0;
dfs(0,N-1,0);
if(flag) ans=1;
}
if(ans) printf("yes\n");
else printf("no\n");
}
return 0;
}