hdu 1518 square解题报告
2014-04-02 23:59
441 查看
/*此题刚看时真没思路,搜了下别人的解题报告才有思路,还是用了个多小时
题意:给出很多棍子,问能否正好拼出个正方形
此题用回溯,一个数一个数的搜,如果之和为正好为给出所以数总数的1/4,则边数加一;
*/#include<iostream>
using namespace std;
int n,m;
int sum,len;
int a[22],v[22];
int ok;
void dfs(int cur,int l,int b)//cur 第几条边,l 当前边的长度,b,数组中第几个,其实可以不要这个,但会超时,因为访问过的就不必再访问
{
if(l==sum/4)
dfs(cur+1,0,0);
if(cur==4)
{
ok=1;
return ;
//cout<<"yes"<<endl;
//break;
}
if(ok==1)//保证能跳出
return ;
if(cur!=4)
{
for(int i=b;i<n;i++)
if(!v[i]&&l+a[i]<=sum/4)
{
v[i]=1;
dfs(cur,l+a[i],i);
v[i]=0;
}
}
}
int main()
{
int t,i,j;
cin>>t;
while(t--)
{
cin>>n;
sum=0;
len=0;
for(i=0;i<n;i++)
{
cin>>a[i];
sum+=a[i];
ok=0;
if(a[i]>len)
len=a[i];
}
if(len>sum/4||sum%4!=0)//小小的剪枝
cout<<"no"<<endl;
else
{
memset(v,0,sizeof(v));
dfs(0,0,0);
if(ok)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
}
return 0;
}
题意:给出很多棍子,问能否正好拼出个正方形
此题用回溯,一个数一个数的搜,如果之和为正好为给出所以数总数的1/4,则边数加一;
*/#include<iostream>
using namespace std;
int n,m;
int sum,len;
int a[22],v[22];
int ok;
void dfs(int cur,int l,int b)//cur 第几条边,l 当前边的长度,b,数组中第几个,其实可以不要这个,但会超时,因为访问过的就不必再访问
{
if(l==sum/4)
dfs(cur+1,0,0);
if(cur==4)
{
ok=1;
return ;
//cout<<"yes"<<endl;
//break;
}
if(ok==1)//保证能跳出
return ;
if(cur!=4)
{
for(int i=b;i<n;i++)
if(!v[i]&&l+a[i]<=sum/4)
{
v[i]=1;
dfs(cur,l+a[i],i);
v[i]=0;
}
}
}
int main()
{
int t,i,j;
cin>>t;
while(t--)
{
cin>>n;
sum=0;
len=0;
for(i=0;i<n;i++)
{
cin>>a[i];
sum+=a[i];
ok=0;
if(a[i]>len)
len=a[i];
}
if(len>sum/4||sum%4!=0)//小小的剪枝
cout<<"no"<<endl;
else
{
memset(v,0,sizeof(v));
dfs(0,0,0);
if(ok)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
}
return 0;
}
相关文章推荐
- 2018.1.29【 HDU - 1518 】解题报告(dfs,极易TLE,剪枝)
- HDU解题报告——1019
- HDU 4611 Balls Rearrangement 解题报告
- hdu 1015 Safecracker 解题报告
- Hdu 1561 The more, The Better 树上DP 解题报告
- HDU 2007 平方和与立方和 解题报告
- HDU 1066 解题报告 详细思路+code
- HDU 1518 Square 搜索
- HDU 1166 解题报告 线段树
- HDU 1518 Square
- hdu_2002_计算球体积_解题报告
- **HDU-1233 还是通畅工程 ACM解题报告(kruskal+并查集求最小生成树)
- HDU 1518 Square(Dfs)
- BestCoder18 1002.Math Problem(hdu 5105) 解题报告
- HDU - 1421 搬寝室 解题报告
- hdu 1106 - 排序(解题报告)
- HDU 2546 饭卡(01背包) 解题报告
- HDU - 1028 Ignatius and the Princess III解题报告(线性dp)
- HDU 1078 FatMouse and Cheese 解题报告
- HDU1102 Constructing Roads 解题报告--prim