贪心算法之最优装船问题
来源:互联网 发布:动漫动态桌面软件 编辑:程序博客网 时间:2024/04/27 13:20
越来越发现自己的编程功底很差,于是近期打算恶补下。看到一题目,初见觉得很简单,但是实际编程的时候,可能是由于自己的基本功太弱的原因吧,还是花费了很长的时间的。题目如下:
有一批集装箱要装入一个载质量为C的货船种,每个集装箱的质量由用户自己输入指定,在货船的装载体积不限的前提下,如何装载集装箱才能尽可能多地的将集装箱装入货船中。
看到该题,第一想到的就是贪心算法。关键在于将问题抽象出来,其实每个箱子是有两个特性的。箱子的质量以及箱子的编号(隐藏的)。抽象出这两点就好办多了。实现将箱子按质量排序,在排序的过程中有点很重要,那就是在按质量移动箱子的时候,要让箱子的编号跟着一起移动。
完整代码如下:
#include "stdio.h"
px(int h_1[],int h1_1[],int n_1,int n_2)
{
int i_1,j_1;
int temp=0;
int temp_1=0;
///////对数组h1_1[]初始化/////
for (i_1=0;i_1<8;i_1++)
{
h1_1[i_1]=i_1;
}
//////冒泡排序///////////////
for (i_1=0;i_1<8;i_1++)
{
for (j_1=0;j_1<8;j_1++)
{
if (h_1[j_1]>h_1[j_1+1])
{
///////相邻的数互换//////
temp=h_1[j_1+1];
h_1[j_1+1]=h_1[j_1];
h_1[j_1]=temp;
/////将箱子号也移动/////
temp_1=h1_1[j_1];
h1_1[j_1]=h1_1[j_1+1];
h1_1[j_1+1]=temp_1;
}
}
}
for (i_1=0;(i_1<8)&&(h_1[i_1]<=n_2);i_1++)
{
n_2=n_2-h_1[i_1];//船剩余的载重量
printf("%d ",h1_1[i_1]);//输出最优装船的箱子号
}
}
int main()
{
int c;
int i;
int h[8]={0};
int h1[8]={0};
int n; //货物的种数
printf("请输入船的最大装载\n");
scanf("%d",&c);
printf("请输入8种货物的质量:\n");
for (i=0;i<8;i++)
{
scanf("%d",&h[i]);
}
px(h,h1,8,c);//对货物的质量排序,并且用数组h1保存货物的箱子号(下表)
}
我发现我的变量命名,不是一般的稀瘪。
- 贪心算法之最优装船问题
- 贪心算法之最优装船
- 贪心算法之装船问题
- 贪心之装船问题
- 装船问题——贪心算法思想
- 贪心算法例题:2052装船问题
- 贪心 装船问题
- 装船问题(贪心)
- 贪心F 装船问题
- 贪心算法之最优装载问题
- [SDUT](2052)装船问题 ---贪心
- 最优分解问题-贪心算法
- 贪心算法:最优分解问题
- 贪心算法 最优装载问题
- 最优装载问题--贪心算法
- 贪心算法之最优装载
- 贪心算法作业之最优服务次序问题
- 学习贪心算法之最优服务次序问题
- c# sqladapter 与sqldataReader
- 利用好每一天
- iOS各种系统服务的代码调用
- ZendFramework框架中的controllers,views中变量的设置
- python 自动采集域名whois 信息。
- 贪心算法之最优装船问题
- ajax+js+dom+json+php+mysql实现仿百度、google的分页效果
- VC实现显示、自动隐藏任务栏(SHAppBarMessage)
- 在Linux里设置环境变量的方法(export PATH)
- Linux Shell 学习笔记 ---- 文件操作
- DataTable使用
- linux mount挂载设备(u盘,光盘,iso等 )使用说明
- poj1416 dfs 碎纸机
- C#综合揭秘——细说事务