学习学习。

#include<stdio.h> #define M 17 #define N 5 void main() { int ob[N]={3,4,7,8,9}; int bag=M; int bag_ob[100][100]={0}; int sum[10]={0}; int i=0,j=0,temp=0,k=0; printf("所有可能的运法\n"); for(i=N-1;i>=0;i--,k++) { temp=i; while(bag>0&&i>=0) { if(bag>=ob[i]) { bag-=ob[i]; bag_ob[k][j]=ob[i]; j++; } else { i--; } } i=0; while(i<j) { printf("%d ",bag_ob[k][i]); i++; } printf("\n"); j=0; i=temp; bag=M; } for(i=0;i<k;i++) { for(j=0;j<100;j++) { sum[i]+=bag_ob[i][j]; } } int max=sum[0]; for(i=1;i<k;i++) { if(sum[i]>=max) { max=sum[i]; } } printf("最优运法\n"); for(i=0;i<k;i++) { if(sum[i]==max) { j=0; while(bag_ob[i][j]>0) { printf("%d ",bag_ob[i][j]); j++; } printf("\n"); } } }