第四章:多维数组和矩阵 ------------- 4.3 基础题:Z形打印二位数组

之字/z型打印矩阵 题目说要按照“之”字打印数字,乍一听,就会想着怎么去遍历这个矩阵。不知道你第一想法会不会是去双重 for 循环去遍历矩阵呢?甚至可能你做过一些题目,比如。其实不管在 Leetcode 还是牛客网,会发现矩阵相关的题相对较少,大多都是诸如二叉树、动态规划、链表、数组之类的题,矩阵相关的确实比较少。这两种虽然题目名称上差不多,但是其实题意是不一样的哦,别被误导了~给定一个矩阵matrix,按照“Z”字形的方式打印这个矩阵。我们先看下这道题是要怎么进行遍历的。我觉得可以把矩阵归到数组这一类吧~ 阅读详情

Z形打印二位数组:

思路:

打印斜线。

注意更换方向的条件。

代码:

#include<iostream>
#include<vector> 
using namespace std;

void print(vector<vector<int> > matrix)
{
	//r:行号, m:行数 
	int r=0,m=matrix.size();
	//c:列号,n:列数
	int c=0,n=matrix.front().size();
	//l2r:从左到右, 
	bool l2r=true;
	while(r<m&&c<n)
	{
		//从左下到右上的斜线
		if(l2r)
		{
			cout<<matrix[r][c]<<" ";
			//现在在第一行,列未到边界,这时只能向右走 
			if(r==0&&c<(n-1))
			{
				l2r=!l2r;//方向切换 
				c++;
				continue; 
			}
			else if(r>=0&&c==n-1)
			{  //现在是在最后一列,只能向下走 
				l2r=!l2r;
				r++;
				continue; 
			} 
			else
			{ //继续走上坡 
				r--;
				c++;
			}
		} 
		else
		{    //反,走下坡 
			cout<<matrix[r][c]<<" ";
			if(c==0&&r<(m-1))
			{ //走到第一列,只能往下走 
				l2r=!l2r;
				r++;
				continue; 
			}
			else if(r==m-1)
			{  //到最后一行,只能往右走 
				l2r=!l2r;
				c++;
				continue; 
			} 
			else
			{
				r++;
				c--;
			}			
		} 
	} 
}

int main()
{
	vector<vector<int> > arr;
	int row=3,col=4;
	//二维向量赋初值 
	for(int i=0,k=1;i<row;i++)
	{
		vector<int> temp;
		for(int j=0;j<col;j++)
		{
			temp.push_back(k);
			k++;					
		}
		arr.push_back(temp);		
	}
	//打印二维向量	
	for(int i=0;i<row;i++)
	{
		for(int j=0;j<col;j++)
		{
			cout<<arr[i][j]<<" ";		
		}		
		cout<<endl;
	}
	
	cout<<endl;
	
	print(arr);
	
	return 0;
} 

结果:

二维数组蛇形和Z形矩阵输出 1、蛇形矩阵输出   思路:就顺时针的矩阵为例,由矩阵外至内圈的数值是逐渐加1的,所以主要是找出值循环增加的规律,跟设定的圈数round有关,而round的取值范围为0 <= round <= n / 2,首先定义圈数从0开始,→的下标x是恒定的,从0开始,但是下标y是从round至n - round的,接着向下↓,下标y保持n - round 不变,下标x从round + 1增加到n - 阅读详情

相关推荐

高效利用ChEMBL数据库:从靶点查询到活性数据处理的完整指南

本文提供了高效利用ChEMBL数据库的完整指南,从靶点查询到活性数据处理。详细介绍了靶点精准定位、高级过滤技巧、数据导出优化以及活性数据清洗、特征工程和可视化等实战技巧,帮助药物研发人员快速获取和处理生物活性数据,提升工作效率。

weixin_29278805的博客 799

Z字形打印二维数组

Z字形打印二维数组 给定一个N*M的整型二维数组,要求以(0,0)为起点,由外层向内层,按Z字形依次输出全部元素

Yuexin_09的博客 592

如何解决Windows系统中缺失oem*.inf文件导致的软件运行问题

本文详细解析了Windows系统中因oem*.inf文件缺失导致软件无法运行的常见问题。文章阐述了oem*.inf文件作为安装信息文件的重要作用,并提供了从精准定位文件路径、安全获取与替换文件的手动修复步骤,到利用专业工具进行一站式修复的完整解决方案。最后,还给出了从软件安装来源、卸载习惯到系统维护等方面的预防措施,帮助用户彻底避免此类问题。

water的专栏 547

数据结构学习笔记——多维数组、矩阵

数组是由n(n≥1)个相同数据类型的数据元素组成的有限序列,在定义数组时,会为数组分配一个固定大小的内存空间,用来存储元素,数组在被定义后,其维度不可以被改变。数组在确定其维度和维界后,元素的个数是固定的,所以不能进行插入和删除运算。数组中最常见的两种操作是查找和修改。广义表是线性表的进一步推广,是由n(n≥0)个数据元素组成的有序序列。线性表中的数据元素只能是单个元素(原子),它是不可分割的,而广义表中的数据元素既可以是原子,也可以是一个广义表(包括空表和非空表),广义表通过圆括号“()

小宇y的博客 3357

2 利用ITK实现多帧Dicom读取,VTK实现数据显示

vtk中也有dicom读写类,但是只能完成单帧DICOM数据读取,这对于实际应用是非常不利的。而ITK可以实现dicom多帧读取,通常情况ITK与VTK也会结合使用(ITK处理,VTK显示),所以就一起学习下吧!

buerbuhuitou的博客 1564

如何手动打包Linux(麒麟系统)的Qt程序

Qt在windows上有自带的windeployqt来帮助打包程序,但是对于linux系统来说Qt并没有自带对应的打包程序。尽管存在开源的linuxdeployqt打包程序,但是在使用的过程中会出现很多问题,对于arm架构的系统来说需要编译并修改源码等等。确定你程序所需要的插件,然后将你使用的Qt版本对应的插件复制到plugins里边。你可以根据各个库后面的路径来找到对应的库,并将它们全部复制到之前创建的lib目录下。复制你的可执行程序到bin目录下(将 your_executable。

qq_45903233的博客 3610

数据结构复习之多维数组与矩阵

多维数组与矩阵知识点多维数组和运算定义顺序存储二维存储位置计算三维数组存储位置数组转换置算法实现矩阵的压缩存储对称矩阵三角矩阵稀疏矩阵三元组表来存储稀疏实例一般㔹置算法快速转置算示带行表的三元组表 一种比特殊的数据结构。 知识点 多维数组和运算 定义 1、一维数组 是一种元素个数固定的线性表。 2、多维数组 是一种复杂的数据结构,可以看成是线性表的推广,一个n维数组可视为其数据元素为n-1维数组的线性表。 顺序存储 二维数组可有两种存储方法:一种是以行序为主序的存储方式,另一种是以列序为主序的存储方式。在C

guangod的博客 2048

【数据集5】土地利用类型数量预测数据LUH2

简介土地利用类型数量预测数据LUH2

WW、forever的博客 4549

python中的矩阵、多维数组

2. 创建一般的多维数组 importnumpy as np a=np.array([1,2,3], dtype=int)# 创建1*3维数组 array([1,2,3]) type(a)# numpy.ndarray类型 a.shape# 维数信息(3L,) a.dtype.name# 'int32' a.size# 元素个数:3 a.ite...

灵思哑舍 948

ABAP Secure Storage 在事务码 SM59 中的应用

系统管理人员在进行维护时,应关注相关日志信息,及时发现可能出现的安全异常,并针对不同安全等级的操作制定相应的备份与恢复策略,以降低潜在风险。该区域在设计上具备高度隔离性,仅允许经过授权的组件访问。保存后,系统会将密码存储在 Secure Storage 中,这种处理方式充分体现了 SAP 标准程序在安全设计上的考量。对于系统管理员而言,这种机制在日常维护与审计中提供了有力的支持,可以通过比对存储数据的哈希值或其他完整性校验手段,及时发现异常变动,保障系统长期稳定运行。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 678

视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)

内核模块如何设置? 内核模块是可在运行时动态加载到内核或从内核卸载的代码块。以下是设置内核模块的步骤: 首先,编写内核模块代码。通常使用 C 语言编写,包含必要的头文件,如<linux/init.h>、<linux/module.h>等。在代码中,需要定义模块的初始化函数和清理函数。初始化函数在模块加载时被调用,用于进行模块的初始化工作,如注册设备、分配资源等。清理函数在模块卸载时被调用,用于释放资源、注销设备等。 例如: #include <li

大模型大数据攻城狮的专栏 2205

第四章 多维数组与矩阵

1、顺时针打印二维数组 package org.lanqiao.algo.elementary._04matrix; /** * 顺时针打印二维数组 输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 */ public class Case...

h_666666的博客 377

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

算法很美 笔记 4.多维数组与矩阵

4.多维数组与矩阵 题1 :顺时针打印二维数组 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9...

xcsxchen 997

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝桥杯算法课《算法最美》笔记——4.多维数组和矩阵

4. 多维数组基础题 4.1 顺时针打印二维数组 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16] 打印1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 思路:一圈一圈的打印。 import java.util.ArrayList; import java.util.Arrays; public class 顺时针打印2维数组 { public static void m

m0_55846001的博客 316

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

简单的二维数组和多维数组

简单的二维数组和多维数组

huihui_999的博客 110

numpy数组基础

创建数组 在numpy中,创建数组有很多种方法,例如如下的例子: import numpy as np sws_1 = np.array([0, 1, 2, 3, 4]) sws_2 = np.array((0, 1, 2, 3, 4)) sws_3 = np.arange(5) sws_4 = np.linspace(0, 2 * np.pi, 5) print(sws_1) print(sws_2) print(sws_3) print(sws_4) print(sws_1[3]) #####

氮气蜗牛的博客 311

算法理论(3)

第四章:多维数组与矩阵 相关题目: ① 顺时针打印二维数组 ② 将元素为零的元素行列清零(不能逐个扫描处理,先扫描一遍记录,再扫描处理) ③ Z字形打印二维数组(看成斜线打印,注意边界情况处理) ④ 求出二位数组中边界为1的最大子方阵(注意下标越界情况) ⑤ 第④题的优化解(创建一个三位数组 扫描四次即可) 进制转换 Ⅰ、首先是十进制转化为其他进制,如二进制,八进制,十六进制: 它们在java中都有专门的函数可供调用: 十进制转化为二进制时调用toBinaryString(); 十进制转化

hyk的博客 147

python的numpy入门简介

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34235371的博客 163

pytorch(黑马程序员)

深度学习简介:

2301_81873056的博客 234

Z字形打印矩阵

参考:https://blog.csdn.net/acaiwlj/article/details/12070603 #include <iostream> using namespace std; const int N = 500; int a[N + 10][N + 10]; void inputMatrix(int row, int col) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j.

blainet的博客 415

【算法很美】多维数组与矩阵

多维数组与矩阵1. 多维数组基础题● 顺时针打印二维数组● 零所在行列清零● Z字型打印矩阵2. 复杂解● 边界为1的最大字方阵● 编程返回子数组最大累加和● 求子矩阵最大累加和● 矩阵运算一、矩阵的加法与减法二、矩阵与数的乘法三、矩阵与矩阵的乘法 1. 多维数组基础题 ● 顺时针打印二维数组 一圈一圈的打印,每圈以 每圈左上角坐标和右下角坐标 为边界。 public static void print(int[][] matrix) { int leftUpRow = 0, leftUpCo

weixin_48434658的博客 724

R语言系统教程(三):多维数组和矩阵

数组可以看成是带多个下标的类型相同的元素的集合,但是注意,尽管数学上向量可以看成一维数组,但是R中不行,因为数组一定是有维度属性的,但向量没有。

TJangun的博客 1万+

MATLAB 语言基础知识 矩阵和数组 多维数组

MATLAB中的多维数组是指具有两个以上维度的数组。在矩阵中,两个维度由行和列表示。 每个元素由两个下标(即行索引和列索引)来定义。多维数组是二维矩阵的扩展,并使用额外的下标进行索引。例如,三维数组使用三个下标。前两个维度就像一个矩阵,而第三个维度表示元素的页数或张数。 创建多维数组 要创建多维数组,可以先创建二维矩阵,然后再进行扩展。例如,首先定义一个 3×3 矩阵,作为三维数组中的第一页。 A = [1 2 3; 4 5 6; 7 8 9] A = 3×3 1 2 3 4

科学推动技术,技术成就科学 3758

R(05):第二章:2.5多维数组和矩阵(1)

《统计建模与R软件》薛毅 第2章 R软件的使用 2.5 多维数组和矩阵 总结 2.5.1 生成数组或矩阵 数组(array)可以看成是带多个下标的类型相同的元素的集合,常用的是数值型的数组如矩阵,最常见的是二维数组。 数组有一个特征属性叫做维数向量(dim属性),维数向量是一个元素取正整数值的向量,其长度是数组的维数,比如维数向量有两个元素时数组为二维数组(矩阵)。维数向量...

genome_denovo的博客 759

z字形矩阵输出

点击打开链接 1.左下方向因无法继续直行需要变向时,要先判断是否能往下走,若不能往下走再往右走; 2.右上方向因无法继续直行需要变向时,要先判断是否能往右走,若不能往右走再往下走 #include #include #include using namespace std; int Direction,Arr[505][505];///1,2,3,4,分别表示右,下,左下,右上。

小堃哥的专栏 2787
上一篇: 神奇的 Magisk
下一篇: continue、break与goto
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值