自己写的,希望高手指点
程序代码:
#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");
}
}
}