试题编号201412-2试题名称Z字形扫描时间限制2.0s内存限制256.0MB问题描述问题描述 试题编号201412-2试题名称Z字形扫描时间限制2.0s内存限制256.0MB问题描述 问题描述 在图像编码的算法中需要
试题编号201412-2试题名称Z字形扫描时间限制2.0s内存限制256.0MB问题描述问题描述
试题编号201412-2试题名称Z字形扫描时间限制2.0s内存限制256.0MB问题描述 问题描述
在图像编码的算法中需要将一个给定的方形矩阵进行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字形扫描后的结果。
样例输入
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
评测用例规模与约定
1≤n≤500矩阵元素为不超过1000的正整数。
以下为楼主的参考答案
#include int a[510][510]{{0}};int main(){int n,x1,y1,flag1;scanf("%d",for(int i1;i0){y;printf(" %d",a[x][y]);--num;if(a[x1][y-1]>0){x;y--;printf(" %d",a[x][y]);--num;flag2;}else{if(a[x-1][y1]>0){x--;y;printf(" %d",a[x][y]);--num;flag4;}}}else flag3;}if(flag2 0){if(a[x1][y-1]>0){x;y--;printf(" %d",a[x][y]);--num;}else flag3;}if(flag3 0){if(a[x1][y]>0){x;printf(" %d",a[x][y]);--num;if(a[x1][y-1]>0){x;y--;printf(" %d",a[x][y]);--num;flag2;}else{if(a[x-1][y1]>0){x--;y;printf(" %d",a[x][y]);--num;flag4;}}}else flag1;}if(flag4 0){if(a[x-1][y1]>0){x--;y;printf(" %d",a[x][y]);--num;}else flag1;}}return 0;}
【文章转自 盐城网页制作公司 http://www.1234xp.com/yancheng.html 处的文章,转载请说明出处】