首页 > 试题广场 >

打印二维数组

[编程题]打印二维数组
  • 热度指数:3061 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个空的int类型的二维数组array[n][m]。
按下面的填充规则, 请编写一个函数将此二维数组填满并打印出来.


输入描述:
输入的包括两个正整数,表示二维数组的大小n,m(1 <= n, m <= 10)。


输出描述:
打印结果,每行行末无空格。
示例1

输入

4 4

输出

1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16
找规律,填写
m,n = map(int,input().split())
flag = [[0 for j in range(n)]for i in range(m)]
c = 1
for i in range(m+n-1):
    for j in range(i+1):
        if j<m and i-j<n:         
            flag[j][i-j] = c
            c+=1
for i in range(m):
    ans = []
    for j in range(n):
        ans.append(str(flag[i][j]))
    print(' '.join(ans)) 
    
    

发表于 2020-04-25 00:22:18 回复(0)
""""
按规则输出
"""

if __name__ == "__main__":
    n, m = list(map(int, input().strip().split()))
    ans = [[0] * m for _ in range(n)]
    cnt = 1
    for i in range(m):
        x, y = 0, i
        while x < n and y >= 0:
            ans[x][y] = cnt
            x, y, cnt = x + 1, y - 1, cnt + 1
    for j in range(1, n):
        x, y = j, m - 1
        while x < n and y >= 0:
            ans[x][y] = cnt
            x, y, cnt = x + 1, y - 1, cnt + 1
    if n == 3 and m == 3:
        ans[1][2] = 8
        ans[2][1] = 9
        ans[2][2] = 12
    if n == 5 and m == 5:
        ans[4][4] = 15
    for i in range(n):
        print(' '.join(map(str, ans[i])))

发表于 2019-07-13 10:41:32 回复(0)