10-伪代码详解
2.2.4 伪代码详解
(1)数据结构定义
根据算法设计描述,我们用一维数组存储古董的重量:
double w[N]; //一维数组存储古董的重量
(2)按重量排序
可以利用C++中的排序函数sort(见附录B),对古董的重量进行从小到大(非递减)排序。要使用此函数需引入头文件:
#include <algorithm>
语法描述为:
sort(begin, end)//参数begin和end表示一个范围,分别为待排序数组的首地址和尾地址
//sort函数默认为升序
在本例中只需要调用sort函数对古董的重量进行从小到大排序:
sort(w, w+n); //按古董重量升序排序
(3)按照贪心策略找最优解
首先用变量ans记录已经装载的古董个数,tmp代表装载到船上的古董的重量,两个变量都初始化为0。然后按照重量从小到大排序,依次检查每个古董,tmp加上该古董的重量,如果小于等于载重量c,则令ans ++;否则,退出。
int tmp = 0,ans = 0; //tmp代表装载到船上的古董的重量,ans记录已经装载的古董个数
for(int i=0;i<n;i++)
{
tmp += w[i];
if(tmp<=c)
ans ++;
else
break;
}