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 |
为什么我的老是超时阿,大家给看看#include <stdio.h> #include <stdlib.h> int a[100]; int used[100]; int compare(const void *x,const void * y){ return (int *)y-(int *)x; } int fun(int n,int k,int left,int l){ int i; if(k==0&&left==0) return 1; if(left==0) left=l; for(i=0;i<n;i++){ if(a[i]>left) continue; if(used[i]==1) continue; used[i]=1; if(fun(n,k-1,left-a[i],l)==1) return 1; used[i]=0; if(a[i]==left||left==l) break; } return 0 ; } int main(){ int n,flag=0,max,sum,i; scanf("%d",&n); while(n!=0){ sum=0; for(i=0;i<n;i++){ used[i]=0; scanf("%d",&a[i]); sum+=a[i]; } qsort(a,n,sizeof(int),compare); max=a[0]; for(i=max;i<=sum;i++) { if(sum%i!=0) continue; else { if(fun(n,n,0,i)==1){ if(flag==1) printf("\n"); printf("%d",i); break; } } } flag=1; scanf("%d",&n); } return 0; } 就是那个排序的时候停在了那组变态的数据哪里,有没有具体办法解决阿,由于是c的,所以不能用sort,只能用qsort,哪位大哥提个建议 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator