1、2022华为机试练习题及答案2022年华为机试练习题及答案华为机试并不难,只要你基础学问扎实,信任你可以顺当通过考试的,下面跟yjbys我一起来看看最新的华为机试练习题吧!题目描述:题目描述接近开学了,小C才想起来数学老师布置了暑假作业。暑假作业是许多张试卷,每张试卷所需的时间和获得的价值已知,请你帮他支配一下,用他仅剩的一点时间来做最有价值的作业。接口说明原型:int GetMaxValue(int nPapers, int nRemain, int paper2, double* pMaxValue)输入参数:int nPapers:试卷的数目(1≤Papers≤20)int
2、nRemain:表示剩余的时间(1≤nRemain≤10000)int paper2:nPapers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷获得的价值。假如剩余时间不够做完一份卷子,可依据剩余时间获得卷子的部分价值。输出参数:double * pMaxValue:获得的最大价值返回值:0:异样,1:胜利学问点:工程环境请运用VS2005代码/*-* 日期:2022-06-30* 作者:SJF0115* 题目:Home+Work* 来源:华为上机-*/#include "OJ.h"#includeusing namespace st
3、d;/*输入: nPapers表示试卷的数目(1≤Papers≤20),nRemain表示剩余的.时间(1≤nRemain≤10000),paper2是一个Papers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷的价值输出: *pMaxValue为获得的最大价值返回:0:异样1:计算胜利返回*/int GetMaxValue(int nPapers, int nRemain, int paper2, double* pMaxValue)if(nPapers < 0 | nRemain < 0 | pMaxValue = NULL)
4、return -1;/if/ 计算性价比double* cost = new doublenPapers+1;for(int i = 0;i < nPapers;+i)costi = (double)paperi1 / paperi0;/for/按性价比排序for(int i = 0;i < nPapers-1;+i)for(int j = 0;j < nPapers-i-1;+j)if(costj > costj+1)swap(costj,costj+1);swap(paperj0,paperj+10);swap(paperj1,paperj+11);/if/for/
5、for/ 计算最大价值int index = 0;int time,value;*pMaxValue = 0;while(nRemain > 0 && index < nPapers)time = paperindex0;value = paperindex1;/ 剩余时间不足以做一份试卷,取得部分价值if(time > nRemain)*pMaxValue += (double)nRemain / time * value;/if/ 剩余时间可以做一份完整的试卷elsenRemain -= time;*pMaxValue += value;/else+index;/while/*for(int i = 0;i < nPapers;+i)printf("时间:%d 价值:%d 性价比:%lfn",paperi0,paperi1,costi);/for*/return 0;本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!第6页 共6页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页第 6 页 共 6 页