华为笔试刷题

华为IC岗笔试刷题含答案(2) 又做了几套题,记录了部分及答案,如有错误,欢迎评论指正。 阅读详情

1、查成绩

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
我的解法:

#include<iostream>
#include<vector>
#include<algorithm>
 
using namespace std;
int main(){
    //N表示学生的数目,M表示操作的数目
    int N,M;
    while(cin >>N >>M){
        //接着输入初始成绩
        vector<int> grades;
        for(int i = 0;i < N;i++){
            int grade;
            cin>>grade;
            grades.push_back(grade);
        }
        //再读取M行的操作数据
        for(int i = 0;i < M;i++){
            string flag ;
            int A,B;
            cin>>flag>>A>>B;
            if(flag == "Q"){
                if(A > B){
                    swap(A,B);
                }
                //获取AB间的最高成绩
                int maxgrade=-1;
                for(int j = A-1;j < B;j++){
                    //maxgrade = max(grades[j],maxgrade);
                    if(grades[j] > maxgrade){
                        maxgrade = grades[j];
                        //cout<<"..."<<endl;
                    }
                }
                cout<<maxgrade<<endl;
            }else if(flag == "U"){
                //将ID为A的同学更新为成绩B
                grades[A-1] = B;
            }else{
             
            }
        }
    }
    return 0;
}

高手的解法,直接使用了max_element():

#include<algorithm>
#include<vector>
using namespace std;
  
int main()
{
    int N,M;
    while(cin>>N>>M){
        vector<int> stu(N);
        int a,b;char c;
        for(int i=0;i<N;++i)cin>>stu[i];
        for(int j=0;j<M;++j){
            cin>>c>>a>>b;
            if(c=='Q'){
                if(a>b)swap(a,b);
                cout<<*max_element(stu.begin()+a-1,stu.begin()+b)<<endl;                   
            }   
            if(c=='U')stu[a-1]=b;        
        }
    }
    return 0;
}

2、记录错误

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
我的解:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
 
bool comp(const pair<string,int> &one, const pair<string,int> &other){
    return one.second > other.second;
}
 
int main(){
    string input;
    vector<pair<string,int>> result;
    while(getline(cin,input)){
        //取出文件名字和行号
        int pos = input.rfind("\\");
        string fileAndLine = input.substr(pos+1);
        bool isExist = false;
        for(int i = 0; i< result.size();i++){
            if(result[i].first == fileAndLine){
                result[i].second++;
                isExist = true;
                break;
            }
        }
        if(!isExist){
            pair<string,int> ele;
            ele = make_pair(fileAndLine,1);
            result.push_back(ele);
        }
    }
    //排序
    sort(result.begin(),result.end(),comp);
    //打印(超过八行只是打印前面的八行)
    for(int i = 0; i < result.size() && i < 8;i++){
        int pos = result[i].first.find(" ");
        string fileName = result[i].first.substr(0,pos);
        if(fileName.size() > 16){
            result[i].first.erase(0,fileName.size()-16);
        }
        cout<<result[i].first<<" "<<result[i].second<<endl;
    }
    return 0;
}

3、比较扑克牌

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//枚举所有的牌大小
enum Card{
    THREE=0,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,J,Q,K,A,TWO ,joker,JOKER
};
const vector<string> allCards = {"3","4","5","6","7","8","9","10","J","Q","K","A","2","joker","JOKER"};
vector<Card> spiltHand(string handcards){
    //cout<<handcards<<endl;
    vector<Card> result;
    handcards += " ";
    size_t  pos = handcards.find(" ");
    size_t  size = handcards.size();
    while(pos  != string::npos){
        //取出片段,移除已经使用过的值
        string cut = handcards.substr(0,pos);
        //handcards.erase(0,pos);
        handcards = handcards.substr(pos+1);
        //给每张牌分类
        for(int i = 0; i < allCards.size();i++){
            if(allCards[i] == cut){
                Card card ;
                card = Card(i);
                result.push_back(card);
                break;
            }
        }
        pos = handcards.find(" ");
    }
    return result;
}
void printMesg(vector<Card > &mesg){
    for(auto ele: mesg){
        cout<<allCards[ele]<<" ";
    }
    cout<<endl;
}
int main(){
    string input;
    while(getline(cin,input)){
        if(input.size() == 0){
            break;
        }
        //得到两副手牌
        int pos = input.find("-");
        string firstHand = input.substr(0,pos);
        string secondHand = input.substr(pos +1);
        vector<Card > FirstHand = spiltHand(firstHand);
        vector<Card > SecondHand = spiltHand(secondHand);
        //printMesg(FirstHand);
        //printMesg(SecondHand);
        if(FirstHand.size() != SecondHand.size()){
            //牌数不相等,要么是有对王,或者炸弹,要么是ERROR
            if((FirstHand[0] == Card ::joker && FirstHand[1] == JOKER )||(SecondHand[0] == Card ::joker && SecondHand[1] == JOKER)){
                cout<<"joker JOKER"<<endl;
            } else if(FirstHand.size() == 4 ) {
                printMesg(FirstHand);
            } else if(SecondHand.size() == 4){
                printMesg(SecondHand);
            }else{
                cout<<"ERROR"<<endl;
            }
        }else{
            //剩下的正常比大小
            for(int i = 0; i<FirstHand.size();i++){
                if(FirstHand[i] > SecondHand[i]){
                    printMesg(FirstHand);
                    break;
                } else if(FirstHand[i]<SecondHand[i]){
                    printMesg(SecondHand);
                    break;
                }
            }
        }
    }
    return 0;
}

高手的解:

//“输入每手牌可能是个子,对子,顺子(连续5张),三个,炸弹(四个)和对王中的一种,
//不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列“
//这句规则让牌面类型的确定和大小的比较直接可以转换为牌个数的比较了,这是解决测试问题的捷径!
//所以一定要善于利用题目已知条件!!!
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
    string line;
    while(getline(cin,line)){
        if(line.find("joker JOKER")!=-1)
            cout<<"joker JOKER"<<endl;
        else{
            int dash=line.find('-');
            string car1=line.substr(0,dash);
            string car2=line.substr(dash+1);
            int c1=count(car1.begin(),car1.end(),' ');
            int c2=count(car2.begin(),car2.end(),' ');
            string first1=car1.substr(0,car1.find(' '));
            string first2=car2.substr(0,car2.find(' '));
            string str="345678910JQKA2jokerJOKER";
            if(c1==c2){
                if(str.find(first1)>str.find(first2))
                    cout<<car1<<endl;
                else
                    cout<<car2<<endl;
            }else
                if(c1==3)
                    cout<<car1<<endl;
                else if(c2==3)
                    cout<<car2<<endl;
                else
                    cout<<"ERROR"<<endl;
        }
    }
}

nkn

#include<iostream>
using namespace std;
struct myList{
    int value;
    myList * next;
    myList(){
        value = -1;
        next = nullptr;
    }
};
int main(){
    int num;
    while(cin >> num){
        if(num == 0){
            break;
        }
        //初始化一个游标和头指针
        myList *p,*first;
        for(int i = 0; i < num;i++){
            myList *next;
            next->value = i;
            p->next = next;
            if(i == 0){
                first = next;
            }
            p = next;
        }
        //最后把尾部的指针指向开头
        p->next = first;
        p = first;
        //当p的下一个元素为NULL时,跳出
        while(p->next != NULL){
            myList *front = p->next;
            myList *back = p->next->next->next;
            delete front->next;
            front->next = back;
            p = back;
        }
        cout<<p->value<<endl;
    }
}

4、删数

有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。

#include<iostream>
using namespace std;
struct myList{
    int value;
    myList * next;
};
int main(){
    int num;
    while(cin >> num){
        if(num == 0){
            break;
        }
        //初始化一个游标和头指针
        myList *p,*first;
        first = new myList;
        first->value = 0;
        first->next = NULL;
        p = first;
        for(int i = 1; i < num;i++){
            //cout<<i<<endl;
            myList *next = new myList;
            next->value = i;
            next->next = NULL;
            p->next = next;
            p = next;
        }
        //最后把尾部的指针指向开头
        p->next = first;
        p = first;
        //cout<<p->value<<endl;
        //当p的下一个元素为NULL时,跳出
        while(p->next != p){
            myList *target = p->next->next;
            p->next->next = target->next;
            p = target->next;
            delete target;
        }
        cout<<p->value<<endl;
        //delete first;
        delete p;
    }
}

更好的解法,使用队列:

用队列模拟,队首取数,用一个计数器计数,隔2个删一个,其他的重新放到队尾 #include<iostream>
#include<queue>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        queue<int> q;
        for(int i=0;i<n;i++)
        {
            q.push(i);
        }
        int count=0;
        while(q.size()!=1)
        {
            if(count!=2)
            {
                int b=q.front();
                q.pop();
                q.push(b);
                count++;
            }
            else
            {
                q.pop();
                count=0;
            }
        }
        int c=q.front();
        cout<<c<<endl;
    }
    return 0;
}

5、字符串集合

输入一个字符串,求出该字符串包含的字符集合

#include<iostream>
using namespace std;
int main(){
    //按行读取数据
    string input;
    while(getline(cin, input)){
        //遍历字符串的每一个字符
        string output = "";
        for(int i = 0; i < input.size();i++){
            size_t pos = output.find(input[i]);\
            //cout<<pos<<endl;
            if(pos == string::npos){
                //没在前面的结果中找到
                output +=input[i];
            }
        }
        cout<<output<<endl;
    }
    return 0;
}
华为优招面经(已拿offer) 华为优招面经(已拿offer) 找工作那些事 俗话说金九银十,然而在现在这句话往往有些落后了,国内一二线互联网公司,如阿里、腾讯、百度、网易、字节跳动、美团还有不是纯粹的互联网公司的华为这些,早在八月份乃至七月份就已经开始他们的秋招。也就是我们所说的提前批,内推,而其中的某些公司,在八月份就已经截止的网上投递。。。 所以,到现在才后知后觉的同学们要开始着急了。 诚然,现在正是校招旺季,很... 阅读详情

相关推荐

华为笔试题目100及最佳答案,华为笔试题库与答案

本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题。大家有什么不懂的都可以留言pythonturtle绘制树。华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分。总分为400分,150分钟考试时间。之前通过为150分,现在好像分数提高了,大家不要太大意,一定要多刷题,争取拿高分,毕竟分数越高评级越高,工资也就越高。OD的工资待遇还是很可观的15K-30K*14-16,希望大家努力(肺腑之言)

w666666Wwwwwww的博客 1095

boost::asio TCP socket聊天室扩展(对消息对象进行序列化和反序列化)

#ifndef CHAT_MESSAGE_HPP #define CHAT_MESSAGE_HPP #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <cassert> #include "structHead...

qianlima210210的专栏 910

【粉丝投稿】海外留学生回国三面华为成功拿下offer,附上大佬的面经希望帮助到大家!

个人介绍 本人海外留学生,因疫情原因放弃在国外工作的想法(因为太难了,之前有offer结果被取消,难受)。从去年下半年开始投递国内各个大厂简历,当时也算能力不够,基本都刷下来了。当时申请了华为云核心的通用开发,也被安排了笔试,结果一道题也没写出来。心态有点崩,再加上当时还在上课,所以打算先不再投递,选择认真刷题。 刷题思路 去年年底课程结束后,打算乘着寒假的空隙,好好刷题找工作。结果那时候出乎意料的被华为捞上来再次安排笔试,我也很认真的对待。好好刷了7-8天题目。这边也跟大家介绍一下我自己这7天怎么刷的。我

weixin_53170315的博客 5053

C++(六)— 输入方式

1、输入包含空格的字符串   使用 getline(cin, str)读取一行字符串,遇到换行符停止;cin>>str,是遇到空格就停止。 实现:输入两个字符,在第一个字符中删除第二个字符中出现的所有字符。int main() { string str1; string str2; getline(cin, str1);//输入是“ab...

dbsggal90047018的博客 386

fpga秋招笔试刷题---华为某年FPGA/IC笔试

华为笔试题目 1:D 阻塞赋值“=”(组合逻辑电路),非阻塞赋值“<=”(时序逻辑电路) 2.正确 时序逻辑电路的定义: 3.错误吧,阻塞赋值在always 也可以用 4.选2 5选C 有些时候,设计中可以使用Latch。异步复位不插入组合逻辑,是防止产生更多的毛刺信号 6.选C 选C A:cnt 正确:没看懂 选B ...

qq_34244712的博客 3595

牛客网华为笔试题刷题记录——C语言版(更新中)

由易到难的顺序更新,刷题的时候感觉C语言可能白学了,重新出发。 欢迎一起的小伙伴学习。加油加油。 提示:在牛客网刷题需要遵守牛客网上的输入输出语法,用户提供输入接口,牛客网从该接口中输入测试数据进行测试。 详见博客:牛客网循环输入输出测试——C语言scanf和printf用法 和牛客网字符/字符串循环输入输出测试——C语言scanf和printf用法 HJ7.取近似值:写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 ..

涵盖了计算机专业基础知识、数学建模相关实践、复杂网络论文研究、LeetCode算法刷题经验、C语言开发经验、前端Vue、React框架开发实战相关知识 2751

华为机考辅导

树之类的题目,输入输出构造会比较花时间,练习的时候多留意输入输出构造,机试可以节省很。对于进阶部分,图往往伴随着深度优先和广度优先出现,我建议优先广度优先深度优先、二叉树。考试过程须控制好做题节奏,切记不要在一道题目上花费过多的时间,合理分配时间。型汇总,对于题型汇总中的高权重题型,建议掌握下这个方法,非高频的以后再说。面的题目描述的确比较详细,大家可以参考,然后根据描述去搜索答案。,如果对于这些题目都有思路并且能解答,那么恭喜你,可以准备考试。模式),平时刷题需要注意区分,多刷需要自己构造的。

HelloWowofei的博客 5万+

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

MoorePlus的博客 4219

代码随想录+力扣刷题记录+华为机考准备记录

为了准备华为机考的刷题记录(不全)(已挂,春招再战)为了准备华为机考的刷题记录(不全)(已挂,春招再战)

LiangManqi0320的博客 2342

智能解决装箱问题:使用优化算法实现高效包装

装箱问题(Bin Packing Problem)是组合优化领域中的一个经典问题,主要涉及如何将一系列对象高效地装入有限数量的容器(或“箱”)中,同时满足特定的约束条件。这个问题的目标是最小化所需使用的箱子数量或者最大化箱子的装载效率,以减少空间或资源的浪费。

MindOpt_003的博客 5546

Transformer时序预测避坑指南:TFT在风电场的5个实战经验

本文分享了Temporal Fusion Transformer在风电场功率预测中的五个实战经验,涵盖数据预处理、模型调优、显存优化、注意力机制解读及在线部署。针对风电数据噪声大、概念漂移等挑战,提供了从构建数据质量标签到高效超参调优的具体方案,并强调利用Transformer架构的可解释性进行业务洞察,助力实现稳健的工业级时序预测。

bert9linguist的博客 461

为什么越厉害的大厂,校招越不看重考试成绩?

前几天赵同学告诉我,他没有通过那家心仪的公司笔试。赵同学成绩不错,每次都是专业前五,但笔试中有一道“银行家算法实现”题,他一点也没写出来。这就是大厂招聘不看重成绩单的原因:招人是为了工作...

sinat_32849897的博客 1390

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3090

备战菊厂笔试1

3、146、5

2301_78856868的博客 1084

STM32G0——USB虚拟串口

STM32G0用cubeMX配置实现USB虚拟串口

阿昌 2320

华为铁三角(AR、SR、FR)的考核指标设计

以和为核心,通过和实现协同。考核维度分为和,并随市场阶段动态调整权重。

从技术实践立足,从项目管理方法论延伸思考 2769

牛客网JAVA笔试题刷题打卡 Day2 ---华为2016秋招研发笔试 题目2

题目来源 牛客网——》华为2016秋招研发笔试题 题目要求 接替 解题(第一次) 思路 代码 package Practice2; import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);...

weixin_42252770的博客 587

某手sig3-ios算法 Chomper黑盒调用

本文主要是介绍Chomper的算法模拟执行,Chomper目前已经已经是能比较完整的模拟ios可执行文件执行的模拟器,在这块有非常大的优势。以前安卓端有强势的unidbg,现在iOS也有Chomper了,后续等待作者持续更新,完善Chomper。强势推荐一波-> Chomper地址: https://github.com/sledgeh4w/chomper。我这块也已经使用Chomper完成雅迪系列、某手的算法调用。后续也会有更多扩展。

成小新的博客 2156

华为机试/笔试联系题Python3-刷题答案笔记(身边按照这个刷了一遍的都拿到了HW offer, 可以用作很好的练习材料)

基础好的,刷完前10题后,后面挑10道中等的和难题刷一下就可以了,其他的简单题对着这个文章看一下总结下思路一般就可以高分通过了。(1) 打开华为机试牛客网链接https://www.nowcoder.com/exam/oj/ta?(3)然后自己不看答案,再刷一遍,熟悉编程思路和调试过程,回头对照着看看和理解别人的思路是否有值得学习的地方。(注:字符串末尾不以空格为结尾)(2)基础不太好的,先对着敲一遍1-10题,把自己不懂的拿出来,对照着几个Python的知识点看看,

qq_33400046的博客 774

Python爬虫:实时交通流量数据爬取与路况分析

随着城市化进程的不断推进,交通流量的管理与预测已成为智能交通系统的重要研究方向。交通流量数据不仅为城市交通管理提供了科学依据,还为驾驶员提供了实时路况信息,帮助其做出更加合理的出行决策。通过爬虫技术,我们可以实时获取城市的交通流量数据,从而分析路况,优化交通管理。在这篇博客中,我们将介绍如何使用Python编写一个爬虫来爬取实时交通流量数据,分析道路的交通状况。我们将使用最新的技术工具来构建爬虫,包括。

2201_76125261的博客 1267

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 396

牛客网JAVA笔试题刷题打卡 Day1 ---华为2016秋招研发笔试 题目1

JAVA笔试题刷题打卡 Day1题目来源题目要求解题(第一次)思路代码注意的地方犯的错后期改进的想法 题目来源 牛客网–》华为2016秋招研发笔试题 题目要求 解题(第一次) 思路 代码 package Practice; import java.util.ArrayList; import java.util.Scanner; public class Main { publi...

weixin_42252770的博客 874

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

刷题 奇怪的牛(华为笔试)

#include&lt;iostream&gt; using namespace std; int main(){ int a = 0; cin &gt;&gt; a; for (int i = 0; i &lt; a; i++) { int b = 0, c = 0; cin &gt;&gt; b; cin &...

a1111h的博客 824

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【算法学习经验】LeetCode 刷 500 道题,笔试/面试稳吗?谈谈算法的学习

归纳?总结?估计大部分都知道归纳、总结这么一回事,但是,有没有去实践我就不知道了。

weixin_48157259的博客 456

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【2019秋招刷题】华为0911笔试题

自动驾驶,发送消息模拟 代码如下: #include <iostream> #include <cstring> #include <vector> using namespace std; string charToStr(char chr) { char chr_str[2] = {chr,'\0'}; string str = chr_str; ...

最简示例破局!基础用法秒会,深层原理不绕弯。 711

软通动力华为java机考题库_华为机考笔试刷题-java-1

题库来源计算字符个数写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNextLine()) {char[] text = sc.nextLine().toLo...

weixin_36325338的博客 3426
上一篇: C++技巧总结
下一篇: DFS(华为数独题解)
陆标
博客等级 码龄9年 100粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值