码迷,mamicode.com
首页 > 编程语言 > 详细

趣学算法2-1 最优装载问题

时间:2019-09-15 11:25:05      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:clu   tput   pac   策略   +=   return   put   temp   inpu   


(1)数据结构定义 
         double w[N]; //一维数组存储古董的重量 
(2)按重量排序 
         sort(w, w+n); //按古董重量升序排序 
(3)按照贪心策略找最优解 
        首先用变量 count 记录已经装载的古董个数, tmp 代表装载到船上的古董的重量,两个变 
    量都初始化为 0。然后按照重量从小到大排序,依次检查每个古董, tmp 加上该古董的重量, 
    如果小于等于载重量 c,则令 count++;否则,退出。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————


1
#include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <math.h> 5 #include <iostream> 6 #include <string> 7 #include <algorithm> 8 #include <queue> 9 #include <map> 10 #include <stack> 11 using namespace std; 12 #define PI acos(-1) 13 #define INF 1<<30 14 #define EPS 1e-6 15 #define SET(a,b) memset(a,b,sizeof(a)) 16 #define N 1000006 17 #define M 10010 18 19 double w[N];//古董的重量数组 20 int main() 21 { 22 23 freopen("input.txt","r",stdin); 24 freopen("output.txt", "w", stdout); 25 26 int n,c;//c为船只最大装载量 27 cin>>c>>n; 28 int i; 29 for(i=0;i<n;i++) 30 cin>>w[i]; 31 sort(w,w+n); 32 double temp=0.0;//记录装箱过程的货物重量 33 int count=0;//装载的数量 34 for(i=0;i<n;i++) 35 { 36 temp+=w[i]; 37 if(temp<=c) 38 count++; 39 else break;//超过最大装载量,则退出 40 } 41 cout<<count<<endl; 42 return 0; 43 } 44 45

 

趣学算法2-1 最优装载问题

标签:clu   tput   pac   策略   +=   return   put   temp   inpu   

原文地址:https://www.cnblogs.com/orange912/p/11521284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!