【POJ 2362】【検索】Square
今回の先輩との検索テーマは、虐げられたのではないでしょうか.
この問題は試合後に補ったものだ.先輩コードを参考にして、枝を切るのは技術的な仕事だと感じました.
この問題は試合後に補ったものだ.先輩コードを参考にして、枝を切るのは技術的な仕事だと感じました.
#include "iostream"
#include "algorithm"
using namespace std;
int a[100],vis[100];
int n,len,flag;
void dfs(int num,int ans,int k);
int main(int argc, char const *argv[])
{
int t;
scanf("%d",&t);
while(t--)
{
int sum=0;
scanf("%d",&n);
for (int i = 0; i < n; ++i)
{
scanf("%d",&a[i]);
sum+=a[i];
}
if(sum%4==0)
{
sort(a,a+n);
memset(vis,0,sizeof(vis));
flag=0;
len=sum/4;
dfs(0,0,0);
flag?printf("yes
"):printf("no
");
}
printf("no
");
}
return 0;
}
void dfs(int num,int ans,int k)
{
if(num==3)// , , ,
{
flag=1;return;
}
if(ans==len)
{
num++;
k=0;
ans=0;
}
for (int i = k; i < n; ++i)
{
if(!vis[i] && ans+a[i]<=len)
{
vis[i]=1;
dfs(num,ans+a[i],i+1);
if(flag)
return;
vis[i]=0;
}
}
}