昨晚做网易互娱的笔试,比较尴尬的是只能用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] ])
难度:简单