http://acm.jlu.edu.cn/joj/showproblem.php?pid=1387 动态规划问题,用DFS也应该能做,不过应该比较费时 #include<stdio.h> #include<stdlib.h> #define N 101 int cmp(const void*a,const void*b){ return *(int *)b-*(int *)a; } int a[N],used[N]; int main(){ int i,j,k,size,n,max,sum; while(scanf("%d%d",&size,&n)!=EOF){ max=sum=0; for(i=0;i<n;i++){ used[i]=0; scanf("%d",&a[i]); } qsort(a,n,sizeof(a[0]),cmp); for(i=0;i<n;i++){ sum=a[i]; for(j=i+1;j<n;j++){ for(k=j;k<n;k++) if(a[k]<=size-sum) sum+=a[k]; if(sum>max) {max=sum;} sum=a[i]; } } printf("sum:%d/n",max); } return 0; }