首页 > 网易初级游戏研发工程师笔试前两题代码(8.12网易笔试)
头像
--7
编辑于 2020-08-13 10:07
+ 关注

网易初级游戏研发工程师笔试前两题代码(8.12网易笔试)

第一题:九个元素中,要符合七星不靠,就得随机删除两个元素
举例:[ 1T 4T 7T;2B 5B 8B;3W 6W 9W ]
情况1、从上面的序列中随机删除两个元素,假如删除两个T结尾的元素,那么以W和B结尾的元素个数肯定都是3个,以T结尾的元素个数只有1个,也就是B和W出现的次数都是3次,T出现的次数只有1次,同理删两个B或两个W结尾的也一样
情况2、从上面的序列中随机删除两个元素,假如这两个元素的结尾不一样,例如一个W和一个B,那么删除之后以T结尾的元素个数肯定有3个,以W和B结尾的元素个数都是2个,也就是T的出现频率是3次,W和B的出现频率是2次,同理删除任意两个结尾不一样的元素也都是符合上面的情况

总结:如果给定的测试数据里面,存在三个不同的字母T、B、W,并且他们的出现次数按从小到大排序是【1 3 3】(情况1)或者【2 2 3】(情况2)那么该测试数据就能满足七星不靠,输出YES,否则输出NO
n = 4
# 字母列表
alpha = ['T','B','W']

# 测试数据
D = [['1T','4T','7T','2B','5B','8B','9W'],
     ['1T','2T','3T','4T','5T','6T','7T'],
     ['1B','2W','3T','4B','5W','6T','8W'],
     ['2B','8B','5B','2B','6T','7W','4W']]

for i in range(n):
    alp = {}    # 字典,用于统计字母以及每个字母的出现次数
    temp = D[i]
    for item in temp:
        nu,al = item     # 将‘XY'分解成’X'和‘Y’
        # 统计字母以及每个字母的出现次数
        if al not in alp:
            alp[al]=1
        else:
            alp[al]=alp[al]+1
            
    temp = list(alp.items())    # 将字典转换成元祖列表
    temp.sort(key=lambda x:(x[1],[0]))    # 按照每个字母出现的次数进行排序
    ans = [item[1] for item in temp]      # 提取出现的频率
    
    if ans == [1,3,3] or ans == [2,2,3]:
        print('YES')
    else:
        print('NO')


第二题:每次都找最大值所在的行和列去划分
n = 3
num = [[1,0,0],
       [0,10,10],
       [0,10,10]]

while num: 
    # 找最大值所在的行的下标
    row  = -1
    for i in range(len(num)):
        temp = num[i]
        ind = temp.index(max(temp))
        row = max(row,ind)
        
    # 转置列表
    tnum = [[item[j] for item in num] for j in range(len(num))]
    
    # 找最大值所在的列的下标
    col  = -1
    for i in range(len(tnum)):
        temp = tnum[i]
        ind = temp.index(max(temp))
        col = max(col,ind)
        
    temp = []
    # 删除行
    num.remove(num[row]) 
    # 删除列
    for item in num:
        del item[col]
        temp.append(item)
        
    # 十字划之后的新的矩阵
    num = temp 
    # 打印输出结果
    print(row+1,col+1)





全部评论

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

推荐话题

相关热帖

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

近期精华帖

热门推荐