贪心法——最优装载问题
来源:互联网 发布:中国人工智能协会 编辑:程序博客网 时间:2024/05/19 11:45
贪心法——最优装载问题
最优装载问题。给出
n 个物体,第i 个物体重量为wi 。选择尽量多的物体,使得总重量不超过C 。
只关心物体的数量,这样只需把所有物体按重量从小到大排序,依次选取每个物体,直到装不下为止。这就是一种典型的贪心算法,只顾眼前,但在一定程度上却能得到最优解。
最优装载问题实现算法
// 贪心法// 最优装载问题void optionalLoad(int *a, int n, int C) { sort(a, a + n); int retain = C; for(int i = 0; i < n; i++) { if(a[i] <= retain) { cout << a[i] << " "; retain -= a[i]; } } cout << endl;}
测试主程序
#include <iostream>#include <algorithm>using namespace std;// 贪心法// 最优装载问题void optionalLoad(int *a, int n, int C) { sort(a, a + n); int retain = C; for(int i = 0; i < n; i++) { if(a[i] <= retain) { cout << a[i] << " "; retain -= a[i]; } } cout << endl;}int main() { while(true) { // n个物体 int n; cout << "请输入物体总数(0退出):"; cin >> n; if(!n) { break; } int C; cout << "请输入不超过的总重量:"; cin >> C; int a[n]; cout << "分别输入" << n << "个物体的重量:"; for(int i = 0; i < n; i++) { cin >> a[i]; } cout << "最优装载为:" << endl; optionalLoad(a, n, C); } return 0;}
输出数据
请输入物体总数(0退出):5请输入不超过的总重量:10分别输入5个物体的重量:5 3 2 4 1最优装载为:1 2 3 4请输入物体总数(0退出):3请输入不超过的总重量:3分别输入3个物体的重量:5 7 4最优装载为:请输入物体总数(0退出):2请输入不超过的总重量:10分别输入2个物体的重量:2 6最优装载为:2 6请输入物体总数(0退出):0Process returned 0 (0x0) execution time : 31.096 sPress any key to continue.
0 0
- 贪心法——最优装载问题
- 贪心算法——最优装载问题
- 贪心-最优装载问题
- 贪心,最优装载问题
- 贪心入门--最优装载问题
- 最优装载问题(贪心)
- 贪心算法 最优装载问题
- 最优装载问题--贪心算法
- 0022算法笔记——【贪心算法】背包问题,最优装载问题
- 0022算法笔记——【贪心算法】背包问题,最优装载问题
- 0022算法笔记——【贪心算法】背包问题,最优装载问题
- 贪心算法之最优装载问题
- 最优装载问题_贪心算法
- 最优装载问题(贪心基础)
- 贪心算法-4.3最优装载问题
- 回朔法——最优装载问题
- 最优装载(贪心)
- 贪心算法-最优装载
- MYSQL函数
- Middle-题目96:187. Repeated DNA Sequences
- 【刷题之路】判断平衡二叉树
- leetcode 217. Contains Duplicate
- lucene 文档评分 及 CustomScoreQuery
- 贪心法——最优装载问题
- acm_Humble Numbers
- 刚毕业的时候遇到的一些问题,可能很简单但是也可以看一看
- 工资类(改)
- Middle-题目97:148. Sort List
- C++ limits头文件的用法(numeric_limits)
- HTML5标莶使用初级技巧
- java-对象管理-集合
- Middle-题目98:316. Remove Duplicate Letters