#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,cnt,sum;
int a[200];
bool vis[200];
bool flag;
int ttt;
void dfs(int s,int tt)
{
int i;
if(s==ttt)
{
if(cnt==3)
{
flag=true;
return ;
}
else
{
cnt++;
dfs(0,0);//cant s=0 then loop directly
cnt--;// important
}
}
if(tt>=n || flag)
return ;
for(i=tt;i<n;i++)
{
if(s+a[i]<=ttt && !vis[i])
{
vis[i]=true;
dfs(s+a[i],i+1);
vis[i]=false;
}
}
}
int main()
{
int t,i;
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
sum=0;
cnt=0;
flag=false;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
if(sum%4)
{
printf("no\n");
continue;
}
ttt=sum/4;
dfs(0,0);
if(flag)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
hdu 1518
最新推荐文章于 2019-03-18 20:48:45 发布