Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

2362为何会WA???

Posted by 00748194 at 2008-10-11 14:59:17
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator