我的code:
#include<bits/stdc++.h>
using namespace std;
int n,m,vis[21],a[21],b;
bool f=0;
void dfs( int x, int t )
{ if(f==1)
{ return ;
}
if(x>b)
{ return ;
}
if(x==b)
{ //cout<<1<<endl;
x=0;
t++;
}
if(t==4)
{ cout<<"yes"<<endl;
f=1;
}
for(int i=m;i>=1;i--)
{ if(vis[i]==0)
{ vis[i]=1;
dfs(x+a[i],t);
vis[i]=0;
}
}
}
int main()
{ cin>>n;
for(int k=1;k<=n;k++)
{ memset(vis,0,sizeof(vis));
b=0;
f=0;
cin>>m;
for(int j=1;j<=m;j++)
{ cin>>a[j];
b+=a[j];
}
b/=4;
//cout<<b<<endl;
sort(a+1,a+m+1);
dfs(0,0);
/*for(int i=1;i<=m;i++)
{ cout<<vis[i]<<endl;
}*/
if(f==0)
{ cout<<"no"<<endl;
}
}
return 0 ;
}