AcWing3208. Z字形扫描
题目
在图像编码的算法中,需要将一个给定的方形矩阵进行 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字形扫描相关推荐
- ccf Z字形扫描
201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan). ...
- ccf z字形 java_第三次CCF计算机软件能力认证题目:Z字形扫描
这是第三次CCF计算机软件能力认证考试(2014年12月14日)的一道题目.小编今天有幸免费参加了这次考试.据说这题是谷歌的笔试题变形??求证实.. 好了,题外话不啰嗦,看题目 题目 在图像编码的算法 ...
- 面试题整理19 矩阵Z字形扫描
题目: 矩阵Z字形扫描 对于任意一个m*n的矩阵A,规定从左上角(0,0)开始,按照距离左上角(0,0)先近后远的顺序进行Z字形扫描,最终到达右下角(m-1,n-1)的位置. 请实现一个函数,输入参数 ...
- AcWing 3208. Z字形扫描
在图像编码的算法中,需要将一个给定的方形矩阵进行 Z 字形扫描(Zigzag Scan). 给定一个 n×n 的矩阵,Z 字形扫描的过程如下图所示: 对于下面的 4×4 的矩阵, 1 5 3 9 3 ...
- CCF201412-2 Z字形扫描(解法二)(100分)
试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag ...
- CCF 201412-2 Z字形扫描
问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...
- 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 请 ...
- CCF201412-2 Z字形扫描
问题描述: 试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Z ...
- CCF认证-2014-12-2 Z字形扫描
问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...
最新文章
- iOS-仿膜拜贴纸滚动(物理仿真)
- android+抄袭+苹果,别再把苹果捧上神坛了,其实苹果和安卓都在借鉴抄袭这个品牌!...
- springboot中配置了拦截器后,拦截器无效的解决方案之一
- 收藏|MySQL常用语法小结
- ngx_http_redis_module配置使用
- Python笔记-房贷计算(本息和本金,每月还利息和每月还本金)及作图对比
- Python递归文件夹遍历所有文件夹及文件
- lambda函数if_Python3中lambda表达式与函数式编程讲解
- IntelliJ idea 创建Web项目后web文件夹下没有WEB-INF的解决方法
- 工欲善其事,必先利其器——持续更新中……
- phpredis中文手册
- 分数加减乘除混合运算带答案_分数加减乘除混合运算150道,小数加减乘除混合运算150到,整数加减乘除混合运算150道,及答案。...
- 美团到店Java二面:TCP 糊涂窗口综合症面试题汇总解析
- WinCC 在线变量绘制趋势图(自定义内部变量-随机数据)
- 12306对抢票软件“下手”了 1
- python3 经典练习题:输入三个数,输出三个数中的最大数
- 号称最为简明实用的Django上手教程(下)
- CAD制图神器-CAD专用键盘
- 艺术科学,物物皆通 ——观《达·芬奇的人生密码》有感
- js---函数基础练习题
热门文章
- git合并多个远程commit并提交
- 计算机远程桌面相关服务,win7打开远程桌面服务,win7计算机无法远程访问
- C语言实战小项目(传统卡牌游戏)
- java+selenium+autoIt 实现下载(打印)功能
- Linux学习--rsync+inotify实现自动同步
- 中国首个中小学人工智能教材出版,在上海、山东发布
- 三硬币问题建模及Gibbs采样求解(Python实现)
- rstudio安装后如何打开_【R教程】R与RStudio简介及安装
- Java字符串:valueOf() 方法
- 流式细胞技术(flow cytometry,FCM)