美文网首页
201412-2 Z字形扫描

201412-2 Z字形扫描

作者: 月影追猎者 | 来源:发表于2019-12-16 17:25 被阅读0次

试题编号:201412-2
试题名称:Z字形扫描
时间限制:2.0 s
内存限制:256.0 MB
问题描述:
  在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:


Z字形扫描

  对于下面的4×4的矩阵,
    1 5 3 9
    3 7 5 6
    9 4 6 4
    7 3 1 3
  对其进行Z字形扫描后得到长度为16的序列:
    1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
  请实现一个Z字形扫描的程序,给定一个n×n的矩阵,输出对这个矩阵进行Z字形扫描的结果。
输入格式:
  输入的第一行包含一个整数n,表示矩阵的大小。
  输入的第二行到第n+1行每行包含n个正整数,由空格分隔,表示给定的矩阵。
输出格式:
  输出一行,包含n×n个整数,由空格分隔,表示输入的矩阵经过Z字形扫描后的结果。
样例输入:
4
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
样例输出:
1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3

Java实现

import java.util.Scanner;

public class ZigzagScan {
    public static void main(String[] args) {
        int num = new Scanner(System.in).nextInt();
        int[][] matrix = new int[num][num];
        for (int i = 0; i < num; i++) {
            String str = new Scanner(System.in).nextLine();
            String[] arr = str.split(" ");
            for (int j = 0; j < num; j++) {
                matrix[i][j] = Integer.parseInt(arr[j]);
            }
        }
        for (int i = 0; i < 2 * num - 1; i++) {
            int start = i < num ? 0 : (i - num + 1);
            int end = i < num ? i : (num - 1);
            if (i % 2 == 0) {
                for (int j = start; j <= end; j++) {
                    System.out.print(matrix[i - j][j] + " ");
                }
            } else {
                for (int j = start; j <= end; j++) {
                    System.out.print(matrix[j][i - j] + " ");
                }
            }
        }
    }
}

Python实现

n = int(input("方形矩阵大小:"))
matrix = []
for i in range(n):
    matrix.append(input(f"矩阵第{i + 1}行:").split(" "))

start = 0
end = 0
for i in range(2 * n - 1):
    if i < n:
        start = 0
        end = i
    else:
        start = i - n + 1
        end = n - 1

    if i % 2 == 0:
        for j in range(start, end + 1):
            print(matrix[i - j][j], end=" ")
    else:
        for j in range(start, end + 1):
            print(matrix[j][i - j], end=" ")

相关文章

  • csp-2014-12-02Z字形扫描

    Program Description | 201412-2 || 试题名称: | Z字形扫描 || 时间限制: ...

  • 201412-2 Z字形扫描

    试题编号:201412-2试题名称:Z字形扫描时间限制:2.0 s内存限制:256.0 MB问题描述:在图像编码的...

  • z字形

    解法二,每一行定义一个stringbuilder,

  • CCF201412-2Z字形扫描(JAVA版)

  • 2020-01-15(ccf201412-2 Z字形扫描)

    问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩...

  • Z字形变换

    Z字形变换 将字符串"PAYPALISHIRING"以Z字形排列成给定的行数: P A H N A ...

  • LeetCode解题记录(6~10)

    6.Z字形变换 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数: PAH NAPLSI...

  • Z字形变换

    题目描述 解题思路 解析参考自acwing,作者:adnil8130 Python代码 代码描述 第一行和最后一行...

  • Z字形变换

    题目区(源自于leetcode) 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入...

  • Z 字形变换

    将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEIS...

网友评论

      本文标题:201412-2 Z字形扫描

      本文链接:https://www.haomeiwen.com/subject/khudnctx.html