首页 > 20200812 华为校招笔试
头像
name1e5s
编辑于 2020-08-13 11:37
+ 关注

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('')

全部评论

(13) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐