题目简述:
假如有一个3行4列的数字
1,2,3,4
5,6,7,8
9,10,11,12
要按1,2,5,3,6,9,4,7,10,8,11,12的顺序输出
输入样例样例:
2
4
1,2,3,4,5,6,7,8
输出样例:
1 2 5 3 6 4 7 8
思路:
一开始我想到是弄成2维数组,m,n记录遍历位置,越界后返回合法位置继续遍历,后来我想到了一种巧妙思路
仔细观察不难发现遍历的时候越界一般会返回第一行或者最后一列之后再按反对角线遍历
那么我可以建立2个数组,一个只放原数组第一行和最后一列的元素,第二个数组放原数组剩下的元素
比如题目描述
A=[1,2,3,4,8,12]
B=[5,6,7,9,10,11]
遍历A中的元素,当A中元素+(5-2)在B中存在就输出
for i in A:
print(i, end=' ')
while B.count(i + T) != 0:
print(i + T, end='')
i += T
源代码:
class ArrayItem():
def Method(self):
A = []
B = []
m = input('row:')
n = input('col:')
m = int(m)
n = int(n)
a = []
a.extend(input("Please input a array ,item split with ',': ").split(','))
b = []
for i in a:
b.append(int(i))
if len(b)!=m*n:
print('Error!!!')
else:
for i in range(0, n):
A.append(b[i])
k = b[n - 1] + n
while b.count(k) != 0:
A.append(k)
k += n
for i in b:
if A.count(i) == 0:
B.append(i)
T = b[n] - b[1]
for i in A:
print(i, end=' ')
while B.count(i + T) != 0:
print(i + T, end='')
i += T
def main():
array=ArrayItem()
array.Method()
if __name__ == '__main__':
main()
效果图:
后记:
任何题目要多想想办法,解法不是唯一的,简洁是永恒的追求。