📄 1518.cpp
字号:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int stick[22];
int num,total,ave;
bool finish,use[22];
bool cmp(int a,int b){
return a>b;
}
void dfs(int start,int sok,int slen){
if(sok==3){
finish=true;
return;
}
for(int i=start;i<num&&!finish;i++){
if(!use[i]){
if(slen+stick[i]==ave){
use[i]=true;
dfs(0,sok+1,0);
use[i]=false;
}
else if(slen+stick[i]<ave){
use[i]=true;
dfs(i+1,sok,slen+stick[i]);
use[i]=false;
}
}
}
return;
}
void main()
{
int testcase;
cin>>testcase;
while(testcase--){
memset(stick,0,sizeof(stick));
memset(use,0,sizeof(use));
cin>>num;total=0;
for(int i=0;i<num;i++){
cin>>stick[i];
total+=stick[i];
}
if(total%4){
cout<<"no\n";
continue;
}
ave=total/4;
sort(stick,stick+num,cmp);
if(stick[0]>ave){
cout<<"no\n";
continue;
}
finish=false;
dfs(0,0,0);
if(finish)
cout<<"yes\n";
else
cout<<"no\n";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -