-->
当前位置:首页 > 题库 > 正文内容

程序填空题:求解最优装载问题(贪心法)

Luz4年前 (2021-06-19)题库1591
有n个集装箱要装上一艘载重量为W的轮船,其中集装箱i(1≤i≤n)的重量为wi。不考虑集装箱的体积限制,现要选出尽可能多的集装箱装上轮船,使它们的重量之和不超过W。

```c++
#include 
#include 
#include 
#include 
using namespace std;
#define MAXN 20						//最多集装箱个数
//问题表示
int	n,W;
//求解结果表示
int maxw;							//存放最优解的总重量

struct NodeType
{   int no;
	int wi;
	int x;
	bool operator<(const NodeType &s) const
	{
		return wi>n>>W;
    for(int i=1;i<=n;i++)
      {
      	cin>>w[i].no>>w[i].wi;
		w[i].x=0;
	  }
	solve();
    sort(w+1,w+n+1,cmp);
	for (int i=1;i<=n;i++)
		if (w[i].x==1)
			printf("%d %d\n",w[i].no,w[i].wi);
	printf("%d",maxw);
	return 0;
}
```
### 输入样例1:

```in
5 10
1 5
2 2
3 6
4 4
5 3
```

### 输出样例1:

```out
2 2
4 4
5 3
9
```





答案: 第1空:sort(w+1,w+n+1) 第2空:i<=n && w[i].wi<=restw 第3空:maxw+w[i].wi


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。