| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
2362为何会WA???#include<iostream>
using namespace std;
int check(int,int,int,int);
int compare(const void*a,const void *b)
{
return *(int*)b-*(int*)a;
}
int stick[21];
int flag[21];
int main()
{
int n,m,i,len;
scanf("%d",&n);
while(n--)
{
int sum=0;
memset(flag,0,sizeof(flag));
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&(stick[i]));
sum+=stick[i];
}
if(sum%4!=0)
cout<<"no"<<endl;
else
{
qsort(stick,m,sizeof(int),compare);
len=sum/4;
if(stick[0]>len)
{cout<<"no"<<endl;break;}
else if(check(m,m,0,len))
cout<<"yes"<<endl;
}
}
return 0;
}
int check(int total,int unused,int left,int len)
{
int i;
if(unused==0&&left==0)
return 1;
if(left==0)
left=len;
for(i=0;i<total;i++)
{
if(flag[i]==1)
continue;
if(stick[i]>left)
continue;
flag[i]=1;
if(check(total,unused-1,left-stick[i],len))
return 1;
flag[i]=0;
if(stick[i]==left||left==len)
break;
}
return 0;
}
不是和木棒问题相似吗?ms比那个还简单。可就是WA,郁闷,有哪位牛人不辞辛劳点拨一下,谢谢
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator