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. 很赞的一个教程: React.js 小书

    很赞,  React.js 小书        http://huziketang.com/books/react/ 推荐阅读入门, 照着来一遍,能会个七七八八, 更多的还需要多写 import Re ...

  2. Word 关闭 Passive Voice

      Sheryl prefers passive voice for some of her writing (such as business documents and correspondenc ...

  3. Idea 快捷键大全【转】

    IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Sh ...

  4. Socket for android 简单实例

    最近在实现socket通信,所以写个demo来简单实现下.我用了一种是原始的socket实现,另一种是MINA框架来实现的. 下载demo:http://download.csdn.net/detai ...

  5. Python 爬虫 ajax爬取马云爸爸微博内容

    ajax爬取情况 有时候我们在用 Requests 抓取页面的时候,得到的结果可能和在浏览器中看到的是不一样的,在浏览器中可以看到正常显示的页面数据,但是使用 Requests 得到的结果并没有,这其 ...

  6. Axure RP 8 V1.6 授权码

    原文链接:https://blog.csdn.net/love_xiaozhao/article/details/81085500 可使用的: Axure RP 8.1.0.3377—-亲测可用Lic ...

  7. console 程序随系统启动及隐藏当前程序窗口

    应业务需求,程序需要与系统启动而自动运行,故加入以下代码,保存成 .bat文件 ,双击执行即可 reg add "HKEY_CURRENT_USER\Software\Microsoft\W ...

  8. codeforces 812E Sagheer and Apple Tree(思维、nim博弈)

    codeforces 812E Sagheer and Apple Tree 题意 一棵带点权有根树,保证所有叶子节点到根的距离同奇偶. 每次可以选择一个点,把它的点权删除x,它的某个儿子的点权增加x ...

  9. 7、Python文件操作工具 openpyxl 工具 2

    创建一个工作簿 使用openpyxl没有必要先在系统中新建一个.xlsx,我们需要做的只需要引入Workbook这个类,接着开始调用它. >>> from openpyxl impo ...

  10. P3174 [HAOI2009]毛毛虫

    题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格 ...