首页 > 试题广场 >

"之"字形打印矩阵

[编程题]"之"字形打印矩阵
  • 热度指数:1557 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,如样例所示。

输入描述:
输入包含多行,第一行包含两个整数n和m,代表矩阵的行数和列数,接下来n行,每行m个整数,代表矩阵matrix


输出描述:
输出一行 ,代表“之”字形输出的矩阵。
示例1

输入

4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

输出

1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16

备注:
额外空间复杂度
```
package main 

import "fmt"

func main() {
    var (
        rows int 
        cols int 
        n int
    )
    fmt.Scan(&rows,&cols)
    matrix := make([][]int,rows)
    for i:=0;i<rows;i++ {
        matrix[i] = make([]int,cols)
        for j:=0;j<cols;j++ {
            fmt.Scan(&n)
            matrix[i][j] = n
        }
    }
    printMatrixZigZag(matrix)
}

func printMatrixZigZag(matrix [][]int) {
    tR := 0 
    tC := 0
    dR := 0
    dC := 0 
    endR := len(matrix) -1
    endC := len(matrix[0]) -1
    fromUp := false
    for tR != endR+1 {
        printLevel(matrix,tR,tC,dR,dC,fromUp)
        if tC == endC {
            tR = tR + 1
        } else {
            tC = tC + 1
        }
        if dR == endR {
            dC = dC + 1
        } else {
            dR = dR + 1
        }
        fromUp = !fromUp
    }
}

func printLevel(matrix [][]int,tR, tC, dR, dC int, fromUp bool) {
    if fromUp {
        for tR != dR +1 {
            fmt.Printf("%d ",matrix[tR][tC])
            tR ++
            tC --
        }
    } else {
        for dR != tR -1 {
            fmt.Printf("%d ",matrix[dR][dC])
            dR --
            dC ++
        }
    }
}

```
发表于 2021-11-13 10:34:37 回复(0)

问题信息

上传者:小小
难度:
1条回答 3116浏览

热门推荐

通过挑战的用户

查看代码