博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[华为机试练习题]20.Home+Work
阅读量:6704 次
发布时间:2019-06-25

本文共 2019 字,大约阅读时间需要 6 分钟。

题目

描述:     题目描述临近开学了,小C才想起来数学老师布置了暑假作业。暑假作业是很多张试卷,每张试卷所需的时间和获取的价值已知,请你帮他安排一下,用他仅剩的一点时间来做最有价值的作业。接口说明原型:int GetMaxValue(int nPapers, int nRemain, int paper[][2], double* pMaxValue) 输入参数:int  nPapers:试卷的数目(1≤Papers≤20)int  nRemain:表示剩余的时间(1≤nRemain≤10000)int  paper[][2]:nPapers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷获取的价值。如果剩余时间不够做完一份卷子,可根据剩余时间获得卷子的部分价值。输出参数:double * pMaxValue:获得的最大价值返回值:0:异常,1:成功知识点:     工程环境请使用VS2005题目来源:    软件训练营 维护人:     d00191780 练习阶段:    中级

代码

/*---------------------------------------*   日期:2015-06-30*   作者:SJF0115*   题目:Home+Work*   来源:华为上机-----------------------------------------*/#include "OJ.h"#include 
using namespace std;/*输入: nPapers表示试卷的数目(1≤Papers≤20),nRemain表示剩余的时间(1≤nRemain≤10000),paper[][2]是一个Papers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷的价值输出: *pMaxValue为获得的最大价值返回:0:异常1:计算成功返回*/int GetMaxValue(int nPapers, int nRemain, int paper[][2], double* pMaxValue){ if(nPapers < 0 || nRemain < 0 || pMaxValue == NULL){ return -1; }//if // 计算性价比 double* cost = new double[nPapers+1]; for(int i = 0;i < nPapers;++i){ cost[i] = (double)paper[i][1] / paper[i][0]; }//for //按性价比排序 for(int i = 0;i < nPapers-1;++i){ for(int j = 0;j < nPapers-i-1;++j){ if(cost[j] > cost[j+1]){ swap(cost[j],cost[j+1]); swap(paper[j][0],paper[j+1][0]); swap(paper[j][1],paper[j+1][1]); }//if }//for }//for // 计算最大价值 int index = 0; int time,value; *pMaxValue = 0; while(nRemain > 0 && index < nPapers){ time = paper[index][0]; value = paper[index][1]; // 剩余时间不足以做一份试卷,取得部分价值 if(time > nRemain){ *pMaxValue += (double)nRemain / time * value; }//if // 剩余时间可以做一份完整的试卷 else{ nRemain -= time; *pMaxValue += value; }//else ++index; }//while /*for(int i = 0;i < nPapers;++i){ printf("时间:%d 价值:%d 性价比:%lf\n",paper[i][0],paper[i][1],cost[i]); }//for*/ return 0;}

转载地址:http://vbdlo.baihongyu.com/

你可能感兴趣的文章
WindowManager$BadTokenException: Unable to add window permission denied for this window type
查看>>
Java中Volatile的作用
查看>>
美食网站响应式精美模板
查看>>
leetcode第一刷_Maximal Rectangle
查看>>
ASP.NET MVC5+EF6+EasyUI 后台管理系统--工作流演示截图
查看>>
【UVA 1451】Average
查看>>
Windows7中搭建Android x86_64及armv8-a操作步骤
查看>>
[android]android下apk的安装过程
查看>>
Spring4.0支持Groovy配置
查看>>
MVC5 网站开发之四 业务逻辑层的架构和基本功能
查看>>
ffmpeg h265
查看>>
使用MFC::CArchive
查看>>
UVA - 10131Is Bigger Smarter?(DAG上的DP)
查看>>
jQuery----各版本
查看>>
js获取项目根路径
查看>>
shopex商城的部署和安装
查看>>
如何通俗易懂地解释遗传算法?有什么例子?
查看>>
java并发 使用ScheduledExecutor的温室控制器--thinking in java 21.7.5
查看>>
如何预测一个互联网产品的未来—一套关于产品的数学模型
查看>>
常见tcp端口
查看>>