预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

2022华为机试练习题及答案2022年华为机试练习题及答案华为机试并不难,只要你基础学问扎实,信任你可以顺当通过考试的,下面跟yjbys我一起来看看最新的华为机试练习题吧!题目描述:题目描述接近开学了,小C才想起来数学老师布置了暑假作业。暑假作业是许多张试卷,每张试卷所需的时间和获得的价值已知,请你帮他支配一下,用他仅剩的一点时间来做最有价值的作业。接口说明原型:intGetMaxValue(intnPapers,intnRemain,intpaper[][2],double*pMaxValue)输入参数:intnPapers:试卷的数目(1≤Papers≤20)intnRemain:表示剩余的时间(1≤nRemain≤10000)intpaper[][2]:nPapers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷获得的价值。假如剩余时间不够做完一份卷子,可依据剩余时间获得卷子的部分价值。输出参数:double*pMaxValue:获得的最大价值返回值:0:异样,1:胜利学问点:工程环境请运用VS2005代码/*---------------------------------------*日期:2022-06-30*作者:SJF0115*题目:Home+Work*来源:华为上机-----------------------------------------*/#include"OJ.h"#includeusingnamespacestd;/*输入:nPapers表示试卷的数目(1≤Papers≤20),nRemain表示剩余的.时间(1≤nRemain≤10000),paper[][2]是一个Papers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷的价值输出:*pMaxValue为获得的最大价值返回:0:异样1:计算胜利返回*/intGetMaxValue(intnPapers,intnRemain,intpaper[][2],double*pMaxValue){if(nPapers<0||nRemain<0||pMaxValue==NULL){return-1;}//if//计算性价比double*cost=newdouble[nPapers+1];for(inti=0;i<nPapers;++i){cost[i]=(double)paper[i][1]/paper[i][0];}//for//按性价比排序for(inti=0;i<nPapers-1;++i){for(intj=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//计算最大价值intindex=0;inttime,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(inti=0;i<nPapers;++i){printf("时间:%d价值:%d性价比:%lf\n",paper[i][0],paper[i][1],cost[i]);}//for*/return0;}本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!