从网上整理的华为机试题目Word文档下载推荐.docx

上传人:b****2 文档编号:4525918 上传时间:2023-05-03 格式:DOCX 页数:20 大小:148.28KB
下载 相关 举报
从网上整理的华为机试题目Word文档下载推荐.docx_第1页
第1页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第2页
第2页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第3页
第3页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第4页
第4页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第5页
第5页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第6页
第6页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第7页
第7页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第8页
第8页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第9页
第9页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第10页
第10页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第11页
第11页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第12页
第12页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第13页
第13页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第14页
第14页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第15页
第15页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第16页
第16页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第17页
第17页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第18页
第18页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第19页
第19页 / 共20页
从网上整理的华为机试题目Word文档下载推荐.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

从网上整理的华为机试题目Word文档下载推荐.docx

《从网上整理的华为机试题目Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《从网上整理的华为机试题目Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。

从网上整理的华为机试题目Word文档下载推荐.docx

7. 

string 

str;

8. 

int 

a[128]={0};

9. 

while 

(cin 

>

str){ 

10. 

for(int 

i=0;

i<

();

i++){ 

11. 

a[str[i]]++;

....位。

我不放心,输出测试一下。

之后就简单了,输出a数组中从小到大第一个值为1的i值即可。

值得注意的是,这种题其实写在一个main函数里就够了,而且这样写也比较好。

毕竟机试不是做项目,不需要模块化,这样修改起来也比较容易。

题目二、

宝宝表示这道题其实不难,就是两个字,复杂。

我的思路大概就是

1.首先判断所给矩形是否相交,不相交直接输出0

2.若相交,将相交面积表示出来,并输出结果

最后发现貌似判断相交的思路会影响相交求面积的思路(正所谓数学题多问,第一问为第二问做铺垫一样)由于我的判相交思路不好影响了第二问,导致这一题我没做出来。

思路大概是求出两个矩形中心坐标,用平行于坐标轴的线段连接两个中心,平行于x轴的线段长度若记为cenX,另一个记为cenY,我就判断cenX,Y与两矩形边长的关系。

做完后才发现对第二问毫无帮助,炸了。

浴室这一题200分我得了不到100分。

(没代码)

题目三、

这道题其实没怎么做出来,就不好说什么。

下面是这道题正解的源码:

#include<

stack>

usingnamespacestd;

intnum[400][400];

intlen[400][400];

intmax(inta,intb)

{

if(a>

b)

returna;

else

returnb;

}

intmain()

intm,n;

scanf("

%d%d"

&

m,&

n);

for(inti=1;

=m;

i++)

{

len[i][0]=0;

for(intj=1;

j<

=n;

j++)

len[0][j]=-1;

%d"

num[i][j]);

if(num[i][j])len[i][j]=len[i][j-1]+num[i][j];

elselen[i][j]=0;

}

stack<

int>

S;

intans=0,tmp;

for(intj=n;

j>

0;

j--)

intW,L;

tmp=0;

if(ans>

=j*m)

break;

(0);

if(len[i][j]>

len[()][j]){(i);

while(!

()&

&

len[i][j]<

=len[()][j])

L=();

();

intp=();

W=(i-p-1);

tmp=max(tmp,W*len[L][j]);

(i);

intLL;

if(!

())LL=();

())

if(p)W=(LL-p);

else{W=LL;

ans=max(tmp,ans);

printf("

%d\n"

ans);

return0;

三.华为挑战赛(也是模拟机试)

题目一、

这种第一题摆明了是送分题,不好说什么,有一点编程底子的10分钟内都能做出来

inti,j;

inttemp;

boolflag;

cin>

m>

n;

for(i=m;

flag=true;

;

temp=(int)sqrt(i);

for(j=2;

=temp;

if(i%j==0)

flag=false;

if(flag==true)

cout<

"

"

卧槽,这道题我要吐槽。

因为一些原因和问题,导致这道题占用了我整个考试3/4多的时间,这也明显是我的不足,此处进行自我检讨和总结。

Point:

输入输出(这里是我的薄弱项!

这也是这道题最主要的内容和考察点。

其实题目本身算法不难,对输入的每一个数,遍历输入的每一个数,统计被整除的次数count,只要count>

=2就是结果输出。

那么接下来问题来了:

1.计算机如何接受这些输入,因为有要求以“,”为分隔符

因为有“,”,作为字符存在,又不限制输入的具体个数,所以无法用int数组接收这些输入,此处应选择C++字符串stringstr;

作为接收输入。

那么很明显,本题对C++字符串是一个考察点,并且考察重要程度甚至大于这道题的算法本身。

2.如何在一个str中取得这些数字

毫无疑问考察应试者的字符串处理能力。

我先想的是以逗号为分隔符,由于C++字符串可以以下标取出值(如str[i]),取得每一个逗号的位置,后一个减前一个得到中间的数字。

然后发现()函数会连逗号一起取出,所以这不是一个可取的方法,更不是一个好方法。

好的处理方法应该是这样,如下:

chara[10];

intp=0;

intnum[N];

inti,j,cnt=0;

[cpp]viewplaincopy

spanstyle="

white-space:

pre"

<

/span>

cin>

for(i=0;

++i)

写字母转成下一位大写字母,如A转成B,特例为Z转成A

2.小写字母类似

3.对数字做如下转换:

偶数减2,特例0转成8;

奇数加1,特例9转成0.

第二题

算麻将的番数:

规则如下:

1.有条和饼两副牌,使用T与O表示,1T代表1条

2.其中出现1条2条3条连着则加1番

3.出现4个一样的牌则代表杠,加两番

连对则加4番

输入规则:

输入者保证牌数已经胡了,格式例如"

1T2T3T,4O5O6O,3T4T5T,5O6O7O,7T7T."

.中间使用“,”逗号隔开,结尾是句点。

输出规则:

输出一个整型值代表番数。

第三题

找出一篇文章中单词出现频率最高的前两位(不分并列情况):

文章字符串规则如下:

1.文章单词使用空格、句点与逗号分隔

2.全部转成小写字母

考后感

题目分数:

第一道60分;

第二道100分;

第三道160分;

自己做对了前两道,160分吧,一般。

最后一题只剩10分钟了,也没去做了。

感谢

非常感谢华为(尤其是刘茜,我不知道她是谁),之前本来第一次笔试我回短信就已经晚了,而且第二天有因为非常紧急的事情又不能去了,只能表示歉意。

谁知还给自己一次机试的机会。

在此对这种负责的精神表示崇高的敬意

七.2016机试题目

实现语言:

C++题目简单,没有涉及太多的算法,就是一些输入输出的格式需要注意

题目一

描述

根据指定的分隔符分隔字符串,并输出指定的段。

如果指定的段超过分隔的段数,输出:

NULL

举例:

AAABBBCCC2

字符串为:

AAABBBCCC?

分隔符为:

指定的段为:

2

字符串分割为:

AAABBBCCC共三段,第2段字符串为:

BBB

输入输出格式要求

输入分隔字符串长度小于128个字符,指定的段是一个正整数。

样例

输入:

输出:

实现代码如下:

#include<

typeinfo>

cctype>

intgetNum(stringinpus)

{

intobjNum=0,t=1;

for(longi=()-1;

i>

=0;

--i){

if(isdigit(inpus[i])&

inpus[i]!

='

'

){

objNum+=(inpus[i]-'

0'

)*t;

t*=10;

}else{

}

returnobjNum;

}

intmain(intargc,constchar*argv[]){

stringinpus;

cin>

inpus;

vector<

string>

objStringInfo;

stringa="

for(inti=0;

i<

++i){

if(inpus[i]=='

||i==()){

(a);

a="

else{

a+=inpus[i];

cout<

objStringInfo[getNum(inpus)-1]<

endl;

运行结果:

题目一.png

题目二

输入一组大于0小于1000的整数,且均不相同,逗号隔开,输出其中能被这些整数中其他元素整除的那些元素。

输入要求同上述描述,输出要求整数顺序按照输入时的顺序输出。

2,4,6,8,10,12,3,9

4,6,8,10,12,9

代码如下:

intgetStringNum(stringinpus)

vector<

getNum(stringinputs)

v;

num;

stringbuff="

i<

=();

if(i==()-1){

buff=inputs[()-1];

(buff);

buff="

if(inputs[i]=='

'

}else{

buff+=inputs[i];

++i){

(getStringNum(v[i]));

returnnum;

strings;

s;

array=getNum(s);

intk=0,result[100]={0};

for(intj=0;

j<

++j){

if(array[i]%array[j]==0&

array[i]!

=array[j])

{

result[k]=array[i];

k++;

k;

++i)

if(i!

=k-1)

result[i]<

"

else

题目三

描述:

大数求余

输入两个超长整型构成的字符串,使用空格隔开,求前者除以后者的余数。

输入的每个字符串最大长度为100个字符,输出为余数值,如果结果异常输出NULL

9

6172844

主要涉及大数问题,A对B取模,即除法运算,可以利用高精度减法解决,前期想的时候细节上可能会有问题,需要注意减法过程中对符号的处理

代码如下:

stringsubtraction(stringa,stringb)//大数减法

intarr1[100]={0},arr2[100]={0},arr3[100]={0};

for(longi=()-1,k=0;

i>

=0;

--i){

arr1[k++]=a[i]-'

arr2[k++]=b[i]-'

longlen=()>

())():

intk=0;

len;

arr3[k++]=arr1[i]-arr2[i];

if(arr3[k-1]<

0){

arr3[k]='

-'

arr3[i]=abs(arr3[i]);

stringresult="

buff="

while(arr3[k]==0){

k--;

for(inti=k;

buff=arr3[i]+'

result+=buff;

returnresult;

stringaModeB(stringa,stringb)//大数取模

if()>

()){

while(b)>

a=subtraction(a,b);

elseif()==())

if(b)>

0)

stringa,b;

a;

b;

aModeB(a,b)<

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2