1、求解简单装载问题
/*
有n个集装箱要装上一艘载重量为W的轮船,其中集装箱i(1<=i<=n)的重量为wi。不考虑集装箱的体积限制,
现要从这些集装箱中选出重量和小于等于W并且尽可能大的若干装上轮船。
*/
#include<stdio.h>
#include<string.h>
#define MAXN 50
int W;//载重量为W
int n;//n个集装箱
int w[MAXN];
int X[MAXN];//存放最优解
int maxw=0;
void dfs(int i,int tw,int rw,int op[]);
void output();
//i表示第i个集装箱,tw表示选择的集装箱的重量和,rw表示剩余集装箱的重量和
//op表示一个方案
int main()
{
int i;
int s=0;
int op[MAXN];
memset(op,0,sizeof(op));
// printf("请输入轮船的载重量:");
scanf("%d",&W);
// printf("请输入集装箱的数量:");
scanf("%d",&n);
// printf("请输入各个集装箱的重量:");
for(i=1;i<=n;i++){
scanf("%d",&w[i]);
s=s+w[i];
}
dfs(1,0,s,op);
output();
return 0;
}
void dfs(int i,int tw,int rw,int op[])
{
int j;
if(i>n){
if(tw>maxw){
maxw=tw;
for(j=1;j<=n;j++)
X[j]