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 |
我已经测了N组数据了,都没发现什么问题啊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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator