60pts,WA #4 #7 #9 #10
求条,悬一棺
#include<bits/stdc++.h>
using namespace std;
int T,n,a[25],s,vis[25],b;
void dfs(int c,int i){
if(i>4){
b=1;
return ;
}
if(c==0){
dfs(s,i+1);
return ;
}
for(int i=1;i<=n;i++){
if(a[i]<=c&&!vis[i]){
vis[i]=1;
dfs(c-a[i],i);
vis[i]=0;
}
}
}
int main(){
cin>>T;
while(T--){
cin>>n;
s=b=0;
for(int i=1;i<=n;i++){
cin>>a[i];
s+=a[i];
vis[i]=0;
}
sort(a+1,a+1+n);
if(s%4==0){
s/=4;
dfs(s,1);
}
cout<<(b?"yes":"no")<<'\n';
}
return 0;
}