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. Visual Studio 2015 安装笔记

  2. CentOS下二进制包/源码安装方式的MySQL卸载步骤

    查看当前系统mysql 运行状态 [root@zendlinux ~]# ps -ef |grep mysql root 1153 1 0 15:40 ? 00:00:00 /bin/sh /usr/ ...

  3. 基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能

    思路: 1.首先,页面前端,上传附件,提交给后台,并带一个随机性的参数(可以用时间戳): 2.后端接收附件,做一系列的逻辑处理,无误后,将对应的文件存储在上传的目录下: 3.然后前端,上传附件成功后, ...

  4. Docker Toolbox更换镜像源并下载centos7

  5. 外贸电商的ERP有很多

    经常有人问我:市面上针对外贸电商的ERP有很多,为什么有的卖家用得风生水起,而我却觉得每款都不合适?一般我都是拒绝回答的,一是因为这种情况大多数跟ERP实施有关,很难用短短几千字就说清楚:二是因为我也 ...

  6. Effective C++ Notes

    Item 07 : 为多态基类声明virtual析构函数 #include <iostream> using namespace std; class Base { public: Bas ...

  7. LeetCode33 搜索旋转排序数组

    搜索旋转排序数组 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标 ...

  8. 我的JS历史知识

    话说在那long long ago的1995以前,绝大多数因特网用户都使用速度仅28.8kbit/s的猫(调制调解器)上网,人们注册成为某个网站的用户时,填写好资料,发送给服务器去验证,如果某一资料填 ...

  9. August 14th 2017 Week 33rd Monday

    Life is like a watch, you can return to the starting point, they are not yesterday! 人生就像钟表,可以回到起点,却已 ...

  10. iStat Menus 的激活密

    Email: @qq.com SN: GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH ...