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

我已经测了N组数据了,都没发现什么问题啊

Posted by anotherh at 2006-03-11 18:47:32 on Problem 1011
In Reply To:我WA了,谁帮忙看一下 Posted by:anotherh at 2006-03-11 18:24:12
> /*pku 1011*/
> #include<stdio.h>
> #include<stdlib.h>
> #define N 80
> int sticks[N],a[N],n,all;
> 
> int cmp(const void *a,const void *b)
> {
> 	return *((int *)b)-*((int *)a);
> }
> 
> int dfs(int len,int begin,int end)/*END代表原长度,就是找到这么长后一次搜索结束*/
> {
> 	int ii,jj,temp;
> 	for(ii=begin;ii<n;ii++)
> 	{	
> 		if(a[ii])
> 		{		
> 			if(len+a[ii]==end)
> 			{
> 				a[ii]=0;
> 				return 1;
> 			}
> 			else if(len+a[ii]<end){	
> 				
> 				temp=dfs(len+a[ii],ii+1,end);
> 				if(temp) 
> 				{
> 					a[ii]=0;
> 					return 1;
> 				}
> 			}					
> 		}
> 	}
> 	return 0;
> }
> 
> int find_small()
> {		
> 	int jj,kk,judge,ori;
> 	for(ori=sticks[0];ori<=all;ori++)
> 	{						
> 		if(!(all%ori))
> 		{
> 			for(jj=0;jj<n;jj++)
> 				a[jj]=sticks[jj];	
> 			for(jj=1,judge=1;jj<=all/ori&&judge;jj++)/*找到JJ次完整的*/
> 				{
> 					kk=0;
> 					while(!a[kk])
> 						kk++;
> 					judge=dfs(0,kk,ori);				
> 				}
> 			if(judge)
> 				return ori;
> 		}
> 	}
> }
> 
> int main()
> {
> 	int ii;
> 	while(scanf("%d",&n)&&n)
> 	{
> 	
> 		for(ii=all=0;ii<n;ii++)
> 		{
> 			scanf("%d",sticks+ii);
>             all+=sticks[ii];
> 		}
> 		qsort(sticks,n,sizeof(sticks[0]),cmp);
> 		/*printf("%d\n",all);*/				
> 		printf("%d\n",find_small());			
> 	}
> }

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