Z字形编排问题详解(C++):

问题描述:给定一个矩阵matrix,输出矩阵matrix进行Z字形编排后的内容。

原矩阵

输出形式:

算法分析与详细解答:

要解决这样一个问题,可能一开始无从下手,但是我们只要认真观察Z字形矩阵的走向过程,就不难发现其中的规律。对于原始矩阵matrix中的任意元素 matrix[i][j]的遍历走向规律可以分为以下三种情况:

1、如果矩阵的元素matrix[i][j]中纵坐标j是偶数,并且i==0或i==SIZE-1,那么遍历路径在矩阵中的走向就是向右移动一格。

2、如果矩阵的元素matrix[i][j]中横坐标i是奇数,并且j==0或j==SIZE-1,那么遍历路径在矩阵中的走向就是向下移动一格。

3、除以上规律情况之外,如果矩阵的元素matrix[i][j]的横纵坐标之和i+j为偶数,那么遍历路径在矩阵中的走向就是向右

上角移动一格;否则,如果i+j是奇数,那么遍历路径在矩阵中的走向就是向左下角移动一格。

c++代码:

 #include<iostream>
#include<iomanip>
using namespace std;
const int SIZE = ;
int main()
{
int matrix[SIZE][SIZE]= { };
int a[SIZE][SIZE] = { };
int* ptr = &(matrix[][]);
for (int i = ; i < SIZE*SIZE; i++)
*ptr++ = i;
cout << "原始矩阵如下:" << endl;
for (int i = ; i < SIZE; i++)
{
for (int j = ; j < SIZE; j++)
cout << setw() << *(*(matrix + i) + j);
cout << endl;
}
//进行Z-字形编排
int i = , j = ;
for (int x = ; x < SIZE; x++)
{
for (int y = ; y < SIZE; y++) {
*(*(a + i) + j) = *(*(matrix + x) + y);
if ((i == || i == SIZE - ) && j % == )
{
j++;
continue;
}
if ((j == || j == SIZE - ) && i % == )
{
i++;
continue;
}
if ((i + j) % == ) {
i--;
j++;
}
else if ((i + j) % == ) {
i++;
j--;
}
}
}
cout << "编排矩阵如下:" << endl;
for (int k = ; k < SIZE; k++)
{
for (int h= ; h < SIZE; h++)
cout << setw() << *(*(a + k) + h);
cout << endl;
}
system("pause");
return ;
}

欢迎评论!

Z字形编排问题详解(C++)的更多相关文章

  1. 算法之美--2.3.1 Z字形编排问题

    2016-12-08   00:23:11 写在前面的话:万事贵在坚持,万事开头难,有很多的东西要学,要知道主次,讲究效率,大的方向对就行!坚持........ 一.图像压缩编码中的Z字排序 JPEG ...

  2. docker-compose编排参数详解

    一.前言 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配置中创建并启动所有服务. C ...

  3. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  4. [No0000137]字符编码详解

    摘要 本文主要介绍了字符编码的基础知识,以及常见的字符编码类型,比如ASCII,Unicode,UTF-8,ISO 8859等,以及各种编码之间的关系,同时专门解释了中文字符相关的编码标准,包括GB2 ...

  5. JPEG图像压缩算法流程详解

    JPEG图像压缩算法流程详解 JPEG代表Joint Photographic Experts Group(联合图像专家小组).此团队创立于1986年,1992年发布了JPEG的标准而在1994年获得 ...

  6. tcpdump 详解

    目录 简介 安装 参数详解 案例 监听指定主机的数据包 监视指定主机和端口的数据包 监视指定网络的数据包 监视指定协议的数据包 使用tcpdump抓取HTTP包 简介 用简单的话来定义tcpdump, ...

  7. OpenStack知识点详解

    一:云计算     一.起源 1. 云计算这个概念首次在2006年8月的搜索引擎会议上提出,成为了继互联网.计算机后信息时代的又一种革新(互联网第三次革命). 2. 云计算的核心是将资源协调在一起,使 ...

  8. pdf2swf 和pdf2html 使用命令详解

    pdf2swf 将pdf文档转换为flash方式阅读,可以满足公式.图片的格式定义: pdf2htmlEX 将pdf文档转换为html方式阅读,有一下优点: 在HTML文件中精确显示原生文本 保持PD ...

  9. tcpdump安装与参数详解

    Centos7安装Tcpdump 对于大部分的Linux操作系统,已经默认安装了tcpdump,可以通过以下命令查看: [root@localhost local]# tcpdump --versio ...

随机推荐

  1. ArcGIS10.x Engine直连提示连接超时ORA-12170 来自:http://www.iarcgis.com/?p=1004

    导语 随着Esri大力宣传直连,用户也越来越由服务连接,改为直连,当然ArcGIS Engine开发用户也不例外. 环境 Oracle数据库,ArcGIS版本不限,不过由于9版本多以服务连接,以10版 ...

  2. Android ListView实现新闻客户端的新闻内容图文混排

    布局文件: <LinearLayout xmlns:android="<a href="http://schemas.android.com/apk/res/andro ...

  3. 八、angularjs 中 filter在controller中的使用--避免多次遍历

    filter在html页面的使用司空见惯,比如: filter在controller中使用可以避免多次使用angular.foreach,来进行遍历.例如: 如果使用filter,则会让代码简洁而且明 ...

  4. 近期关于CI/CD策略以及git分支模型的思考

    近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...

  5. 运行第一个MapReduce程序,WordCount

    1.安装Eclipse 安装后如果无法启动重新配置Java路径(如果之前配置了Java) 2.下载安装eclipse的hadoop插件 注意版本对应,放到/uer/lib/eclipse/plugin ...

  6. CSS中的line-height

    基本概念 行高.行距 行高是指文本行基线间的垂直距离.那什么是基线呢?记不记得vertical-align属性有个baseline值,这个baseline就是基线. 注意:倒数第二根才是基线(base ...

  7. 微信分享BUG

    WXFileObject fileObject = new WXFileObject(); fileObject.setContentLengthLimit(1024 * 1024 * 10); fi ...

  8. 使用FontAwesome

    使用FontAwesome https://github.com/PrideChung/FontAwesomeKit 为什么要使用FontAwesome呢,其实,它的字体就是矢量图,无论是放大还是缩小 ...

  9. 安装kubernetes 环境

    master: 10.6.2.170     #master节点兼做仓库 node-1: 10.6.2.171 node-2: 10.6.2.172 1.添加host解析 # cat << ...

  10. CSS边框长度控制

    以前需要边框长度比容器小一些时,我用div嵌套.后来发现伪类在实现这个效果时很方便,只需要一个div就够了,另外调整padding和margin都不会很麻烦. <div class=" ...