上城区建设局网站,discuz和WordPress哪个更好,新媒体短视频推广,网站建设在阿里云在图像编码的算法中#xff0c;需要将一个给定的方形矩阵进行 Z 字形扫描(Zigzag Scan)。 给定一个 nn 的矩阵#xff0c;Z 字形扫描的过程如下图所示#xff1a; 对于下面的 44 的矩阵#xff0c; 1 5 3 9 3 7 5 6 9 4 6 4 7 3 1 3 对其进行 Z 字形扫描后得到长度为 16 的…在图像编码的算法中需要将一个给定的方形矩阵进行 Z 字形扫描(Zigzag Scan)。 给定一个 n×n 的矩阵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表示矩阵的大小。
输入的第二行到第 n1 行每行包含 n 个正整数由空格分隔表示给定的矩阵。
输出格式 输出一行包含 n×n 个整数由空格分隔表示输入的矩阵经过 Z 字形扫描后的结果。
数据范围 1≤n≤500 矩阵元素为不超过 1000 的正整数。
输入样例 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
代码如下
#include iostream
using namespace std;
const int N 510;
int a[N][N];
int main()
{int n;cinn;for (int i 1;in;i)for (int j 1;jn;j)cina[i][j];for (int i 2;in*2;i){if (i%2){for (int j 1;ji;j){if (j1 jn i-j1 i-jn)couta[j][i-j] ;}}else{for(int j i-1;j;j--){if (j1 jn i-j 1 i-j n)couta[j][i-j] ;}}}return 0;
}