POJ 2362

来源:互联网 发布:欠淘宝贷款50万 编辑:程序博客网 时间:2024/06/04 23:18
#include <cstdio>#include <algorithm>using namespace std;int a[100],big,sum,n,cas,v[100],flag;int cmp(int a,int b){return a>b;}int dfs(int k,int id,int res){    if(k==3)return 1;    for(int i=id;i<=n;i++){        if(!v[i] && res>=a[i]){            v[i]=1;                     if(res==a[i]){                if(dfs(k+1,1,sum/4))return 1;            }elseif(dfs(k,i+1,res-a[i]))return 1;            v[i]=0;        }    }    return 0;} int main() {    scanf("%d",&cas);    while(cas--){        big=0;        sum=0;        scanf("%d",&n);        for(int i=1;i<=n;i++){            scanf("%d",&a[i]);            if(a[i]>big)big=a[i];sum+=a[i];        }flag=0;        if(sum%4!=0 || big>sum/4){printf("no\n");continue;}        else{            sort(a+1,a+n+1,cmp);            for(int i=0;i<100;i++)v[i]=0;          flag=dfs(0,1,sum/4);        }        if(flag!=0)       printf("yes\n");        else  printf("no\n");    }    return 0;}

0 0