最近学长出了一个题:
对于这样的一个数组:
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
[13, 14, 15, 16]
像如下方式输出:
4
3, 8
2, 7, 12
1, 6, 11, 16
5, 10, 15
9, 14
13
于是想了想,在网上找了找相关的题目,正好又学了python,所以也尝试着自己用python实现了一下:
#encoding=utf-8
arr1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
for each_arr in arr1:
print(each_arr)
tem_arr = [] #用来记录数组值
rows = len(arr1)
cols = len(arr1[0])
'''
4 [0][3]
3 8 [0][2] [1][3]
2 7 12 [0][1] [1][2] [2][3]
1 6 11 16 [0][0] [1][1] [2][2] [3][3]
5 10 15 [1][0] [2][1] [3][2]
9 14 [2][0] [3][1]
13 [3][0]
'''
def isValidIndex(x, n):
return(x >= 0 and x < n)
#每一行的每个值的数组下标的差都一样,
for i in range(cols * 2 - 1): #共输出 cols * 2 - 1 行
diff = cols - i - 1 #每一行的差
for j in range(cols): #数组中每一个值的下标范围是0到cols
k = j - diff #通过一个下标值计算另一个下标值
if isValidIndex(k, rows): #剩下就是判断这些下标值是否满足当前的情况, 这一步不怎么好理解
print(arr1[k][j], ' ', end='')
print()