20200812 华为校招笔试

这次的题目明显比较简单...

第一题 模拟找钱

假设咖啡卖 5 元,每个客户可能给你 5、10、20 元的纸币,初始情况下你没有任何纸币,问是否能够找零。如果能找零就输出 true,总用户数, 否则输出 false,失败的用户index
例如:
5,5,5,10 => true,4
10,10 => false,1

就简单的记录一下各个纸币的数目就行:

def run1():
    moneys = list(map(int, input().split(',')))
    number_of_5 = 0
    number_of_10 = 0
    number_of_20 = 0
    for index, value in enumerate(moneys):
        if value == 5: # ok
            number_of_5 += 1
            continue
        elif value == 10: # return 5
            number_of_10 += 1
            number_of_5 -= 1
            if number_of_5 < 0:
                print('false,'+str(index + 1))
                return
        elif value == 20: # return 15
            number_of_20 += 1
            if number_of_10 > 0 and number_of_5 > 0:
                number_of_10 -= 1
                number_of_5 -= 1
            elif number_of_5 > 0:
                number_of_5 -= 3
                if number_of_5 < 0:
                    print('false,'+str(index + 1))
                    return
            else:
                print('false,'+str(index + 1))
                return
        else:
            print('false,'+str(index + 1))
            return

    print('true,'+str(len(moneys)))

第二题 走路

小明步长 l, 有一个 m x n 的矩阵, 1 表示能走 0 表示不能走,小明可以横着走竖着走,方向不限制,问小明能否从左上角走到右下角。

输入:

2
3 5
1 0 1 0 0
0 1 1 0 1
0 0 1 0 1`

输出:1

简单的 DFS,在此不表。

第三题 大 X 输出字符串

给定 X 的行数,按照 X 样式输出字符串:

例如:
EVERYTHINGGOESWELL,5 => EIWETGELYORHGSLVNE

E    V
 E  R
  Y
 T  H
I    N
...

就简单的输出一下:

def computeCol(n, i):
    if i < n:
        if i % 2 == 0:
            return i // 2
        return n - 1 - (i // 2)
    else:
        center = n // 2
        offset = (i - n) // 2 + 1
        if i % 2 != 0:
            return center - offset
        return center + offset

def run():
    string, length = input().split(',')
    length = int(length)
    result = [[] for _ in range(length)]
    for i, val in enumerate(string):
        result[computeCol(length, i % (2 * length - 3))].append(val)
    for i in result:
        for j in i:
            print(j, end = '')
    print('')
#笔经##华为#
全部评论
第三题这个题意表示没咋看懂
2 回复 分享
发布于 2020-08-13 14:56
第二题步长是固定的还是可以比这个小?
1 回复 分享
发布于 2020-08-12 21:57
的确简单了点
点赞 回复 分享
发布于 2020-08-12 20:46
这。
点赞 回复 分享
发布于 2020-08-12 21:00
第二题一直卡90.。。
点赞 回复 分享
发布于 2020-08-12 21:03
请问是华为什么部门呢 我在官网投递的岗位一直没有消息呢
点赞 回复 分享
发布于 2020-08-12 21:10
三道题,每道100分吗?是100分给过吗
点赞 回复 分享
发布于 2020-08-12 22:55
m
点赞 回复 分享
发布于 2020-08-12 22:56
这是什么语言c++?
点赞 回复 分享
发布于 2020-08-13 09:17
请问华为笔试多长时间呀  需要全部AC才有机会进入面试么
点赞 回复 分享
发布于 2020-08-13 14:48
大家都是应届生招聘么,投实习做题拿到100分算不算弱啊
点赞 回复 分享
发布于 2020-08-13 15:58
第二天给的那个矩阵应该不能走吧
点赞 回复 分享
发布于 2020-08-13 18:37
没参加笔试,贴个第三题代码(不知道有没有BUG...)~~ 希望自己的笔试的时候题也简单点🤣 void fun(string &str, int x) { vector<vector<char>> v; int l = 0, r = x - 1; int add_l = 1, add_r = -1; int k = 0, n = str.size(); while(k < n){ vector<char> tmp(x, ' &(5528)#39;); if(l == r){ add_l = -1; add_r = 1; tmp[l] = str[k++]; l--, r++; v.push_back(tmp); continue; } if(l == 0){ add_l = 1; add_r = -1; } tmp[l] = str[k++]; if(k == n){ v.push_back(tmp); break; } tmp[r] = str[k++]; v.push_back(tmp); l += add_l; r += add_r; } int m = v.size(); for(int i = 0; i < x; i++) for(int j = 0; j < m; j++){ if(v[j][i] != ' &(5528)#39;) cout<<v[j][i]; } cout<<endl; }
点赞 回复 分享
发布于 2020-08-14 09:48

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello&nbsp;world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
9
77
分享
牛客网
牛客企业服务