题目

在图像编码的算法中,需要将一个给定的方形矩阵进行 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,表示矩阵的大小。

输入的第二行到第 n+1 行每行包含 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 = 1000;
int a[N][N]={0};
int main()
{int n;scanf("%d",&n);for(int i = 1;i <= n;i ++ ){for(int j = 1;j <= n;j ++ ){scanf("%d",&a[i][j]);}}int i=1,j=1;//起始坐标printf("%d ",a[i][j]);//输出原点while(i!=n&&j!=n)//进行z字扫描上半边{if(i==1&&a[i][j+1]!=0)//扫描到上边界且右面不是空气墙{j=j+1;//右移printf("%d ",a[i][j]);while(j!=1&&a[i+1][j-1]!=0)//左下角不为空气墙并移至最左侧{i=i+1;j=j-1;printf("%d ",a[i][j]);}}if(j==1&&a[i+1][j]!=0)//扫描到左边界且下面不是空气墙{i=i+1;//下移printf("%d ",a[i][j]);while(i!=1&&a[i-1][j+1]!=0)//右上角不为空气墙并移至最上侧{i=i-1;j=j+1;printf("%d ",a[i][j]);}}}//好了,当我们扫描完上半部分时,只会有两种情况出现//一种情况是坐标移至左下角位置并往右移动//一种情况是坐标移至右上角位置并往下移动while(i!=n||j!=n)//当坐标不为(n,n)时持续循环{if(i==n&&a[i+1][j]==0&&a[i][j+1]!=0)//扫描至最下侧且下侧是空气墙右侧不是空气墙{j=j+1;//右移printf("%d ",a[i][j]);while(j!=n&&a[i-1][j+1]!=0)//移至最右侧并且右上角元素存在且不为空气墙{i=i-1;j=j+1;printf("%d ",a[i][j]);}}if(j==n&&a[i][j+1]==0&&a[i+1][j]!=0)//扫描至最右侧且右侧是空气墙下侧不是空气墙{i=i+1;//下移printf("%d ",a[i][j]);while(i!=n&&a[i+1][j-1]!=0)//移至最下侧并且左下角元素存在且不为空气墙{i=i+1;j=j-1;printf("%d ",a[i][j]);}}}
}

AcWing3208. Z字形扫描相关推荐

  1. ccf Z字形扫描

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

  2. ccf z字形 java_第三次CCF计算机软件能力认证题目:Z字形扫描

    这是第三次CCF计算机软件能力认证考试(2014年12月14日)的一道题目.小编今天有幸免费参加了这次考试.据说这题是谷歌的笔试题变形??求证实.. 好了,题外话不啰嗦,看题目 题目 在图像编码的算法 ...

  3. 面试题整理19 矩阵Z字形扫描

    题目: 矩阵Z字形扫描 对于任意一个m*n的矩阵A,规定从左上角(0,0)开始,按照距离左上角(0,0)先近后远的顺序进行Z字形扫描,最终到达右下角(m-1,n-1)的位置. 请实现一个函数,输入参数 ...

  4. AcWing 3208. Z字形扫描

    在图像编码的算法中,需要将一个给定的方形矩阵进行 Z 字形扫描(Zigzag Scan). 给定一个 n×n 的矩阵,Z 字形扫描的过程如下图所示: 对于下面的 4×4 的矩阵, 1 5 3 9 3 ...

  5. CCF201412-2 Z字形扫描(解法二)(100分)

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

  6. CCF 201412-2 Z字形扫描

    问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...

  7. CCF201412-2 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 请 ...

  8. CCF201412-2 Z字形扫描

    问题描述: 试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Z ...

  9. CCF认证-2014-12-2 Z字形扫描

    问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...

最新文章

  1. iOS-仿膜拜贴纸滚动(物理仿真)
  2. android+抄袭+苹果,别再把苹果捧上神坛了,其实苹果和安卓都在借鉴抄袭这个品牌!...
  3. springboot中配置了拦截器后,拦截器无效的解决方案之一
  4. 收藏|MySQL常用语法小结
  5. ngx_http_redis_module配置使用
  6. Python笔记-房贷计算(本息和本金,每月还利息和每月还本金)及作图对比
  7. Python递归文件夹遍历所有文件夹及文件
  8. lambda函数if_Python3中lambda表达式与函数式编程讲解
  9. IntelliJ idea 创建Web项目后web文件夹下没有WEB-INF的解决方法
  10. 工欲善其事,必先利其器——持续更新中……
  11. phpredis中文手册
  12. 分数加减乘除混合运算带答案_分数加减乘除混合运算150道,小数加减乘除混合运算150到,整数加减乘除混合运算150道,及答案。...
  13. 美团到店Java二面:TCP 糊涂窗口综合症面试题汇总解析
  14. WinCC 在线变量绘制趋势图(自定义内部变量-随机数据)
  15. 12306对抢票软件“下手”了 1
  16. python3 经典练习题:输入三个数,输出三个数中的最大数
  17. 号称最为简明实用的Django上手教程(下)
  18. CAD制图神器-CAD专用键盘
  19. 艺术科学,物物皆通 ——观《达·芬奇的人生密码》有感
  20. js---函数基础练习题

热门文章

  1. git合并多个远程commit并提交
  2. 计算机远程桌面相关服务,win7打开远程桌面服务,win7计算机无法远程访问
  3. C语言实战小项目(传统卡牌游戏)
  4. java+selenium+autoIt 实现下载(打印)功能
  5. Linux学习--rsync+inotify实现自动同步
  6. 中国首个中小学人工智能教材出版,在上海、山东发布
  7. 三硬币问题建模及Gibbs采样求解(Python实现)
  8. rstudio安装后如何打开_【R教程】R与RStudio简介及安装
  9. Java字符串:valueOf() 方法
  10. 流式细胞技术(flow cytometry,FCM)