第一行输入n表示有n个木棍
第二行输入每个木棍的长度
输出yes或no
例
输入
5
1 2 3 4 5
输出
yes
输入
4
1 1 1 1
输出
no
#include<iostream>
using namespace std;
int n;
int sum=0;
int maze[100];
bool vis[100];
bool ok;
void dfs (int num,int cnt)
{
if (ok){
return ;
}
if (num==sum/3)
{
dfs (0,cnt+1);
return ;
}
if (cnt==3){
ok=true;
return ;
}
for (int i=0;i<n;i++){
if (!vis[i]){
vis[i]=true;
dfs (num+maze[i],cnt);
vis[i]=false;
}
}
}
int main ()
{
cin>>n;
for (int i=0;i<n;i++){
cin>>maze[i];
sum+=maze[i];
}
if (sum%3!=0){
cout<<"no"<<endl;
return 0;
} else {
dfs (0,0);
if (ok){
cout<<"yes"<<endl;
return 0;
}else {
cout<<"no"<<endl;
return 0;
}
}
return 0;
}
欢迎关注我的公众号:王同学的蓝桥杯训练营