【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[螺旋矩阵]

昨晚做网易互娱的笔试,比较尴尬的是只能用C/C++/Java,而本人对C/C++的了解仅限于大一的课程设计(而且一年多没用过C写代码了),Java差不多看得懂代码但是没有系统的学过。无奈最后只能用python写了两道题,再用C照着python的语法写了一遍(然而提交没通过,基本上是凉凉了)

第一题:

简单来说就是通过行、列的下标在上述的螺旋矩阵中找出对应的值。

最简单直接的办法就是直接构建螺旋矩阵,

把python的代码分享一下:

c = input()
n,m = input().split(" ",1)
data = []
for i in range(int(m)):
    data.append(list(map(int,input().split(" "))))

ju_zhen =[]                         #定义一个n*n的矩阵,每个元素都为0
for x in range(int(n)):
    ju_zhen.append([])
    for y in range(int(n)):
        ju_zhen[x].append(0)

num = 0                                            #n代表当前数字
i = 0                                              #i代表当前是第几圈
while(num<int(n)**2):
           
    for j1 in range(i,int(n)-i):                   #从左上到右 上                
        ju_zhen[i][j1] = num+j1+1-i      
    num += j1+1-i

    for j2 in range(i+1,int(n)-i):                 #从右上到右下
        ju_zhen[j2][int(n)-i-1] = num+j2-i
    num += j2-i

    for j3 in range(i,int(n)-1-i)[::-1]:           #从右下往左下
        ju_zhen[int(n)-1-i][j3] = num+int(n)-1-j3-i
    num +=int(n)-1-j3-i

    for j4 in range(i+1,int(n)-1-i)[::-1]:         #从左下往左上
        ju_zhen[j4][i] = num+int(n)-1-j4-i
    num += int(n)-1-j4-i
    i += 1                                         #圈数 +1
# print(ju_zhen)
for cj in data:
    print(ju_zhen[ cj[0] ][ cj[1] ])




难度:简单

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值