打印如下形式的矩阵;
n=5:
1 2 9 10 25
4 3 8 11 24
5 6 7 12 23
16 15 14 13 22
17 18 19 20 21
n=6:
1 2 9 10 25 26
4 3 8 11 24 27
5 6 7 12 23 28
16 15 14 13 22 29
17 18 19 20 21 30
36 35 34 33 32 31
观察这个矩阵的特点,类似一条蛇左右盘旋。
因此定义两种基本操作:左扩展和右扩展。左扩展的概念就是
1 2
4 3
变成
1 2 9
4 3 8
5 6 7
的过程,就是说蛇头是从左往右来走的。
左扩展的概念与右扩展类似,只是方向与之相反。
以单个1为基础矩阵A,n为5的矩阵就是A扩展4次的结果。
因此算法的思想就是在基础矩阵上进行扩展,直到满足矩阵规模限制。
代码风格比较恶劣,C和C++混用,而且不释放空间,没注释,没异常判断和处理。仅作参考。/*******************
* print a matrix
* in a form of snake.
* starstarstarpku@gmail.com* ****************/
#include <iostream>
using namespace std;
int* arr[10];
void r_extend(int* arr[], int n)
{
int ele = n*n;
for (int i=0; i<=n; i++) {
arr[i][n] = ++ele;
}
for (int j=n-1; j>=0; j--) {
arr[n][j] = ++ele;
}
}
void l_extend(int* arr[], int n)
{
int ele = n*n;
for (int j=0; j<=n; j++) {
arr[n][j] = ++ele;
}
for (int i=n-1; i>=0; i--) {
arr[i][n] = ++ele;
}
}
void print_matrix(int n)
{
arr[0][0]=1;
for (int i=1; i<n; i++) {
if (i%2)
r_extend(arr, i);
else
l_extend(arr, i);
}
for (int j=0; j<n; j++) {
for (int k=0; k<n; k++) {
if (k>0)
printf (" ");
printf ("%2d", arr[j][k]);
}
printf ("/n");
}
}
int main(int argc, char **argv)
{
int n;
cout << "input an integer n: "<< endl;
cin >> n;
for (int i=0; i<n; i++)
arr[i] = new int[n];
![]()
print_matrix(n);
}
相关推荐
Python :顺时针打印矩阵
牛客网上的剑指 offer的在线编程: 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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. # -*- coding:utf-8 -*- import nump
C/C++ 打印矩阵【简单易懂,代码可以直接运行】
C/C++ 打印矩阵【简单易懂,代码可以直接运行】 水题,不过需要记住数组传入自定义函数时的规则 1.在main函数内部:直接写入数组名a,b之类的 2.在型参处,要写入a[]或a[数字],如果时二维数组,则只能省略第一个[]内的3.数字,第二个[]内的数字不能省略!! 4.修改后的数组不用return返回出来,它会在主函数内自动修改 5.最重要的一点,传入形参的数组时指向数组的指针而不是数组本身,不要在自定义函数内部求解数组的长度,64位的电脑用sizeof求出来的永远是8,32位永远是4。 给定一个 r
unicode编码汉字库(16*16点阵)
Unicode编码下的16*16点阵汉字库(先左后右先上后下),宋体12号或小4字体大小(简体)。取码范围0X4E00-0X9FFF
word手敲公式 快速入门Unicode
介绍一下Word中手敲公式的一种方法 word中集成了 Unicode 和 LaTeX 两种语法 今天介绍一下 Unicode 的语法 1.第一步,打开编辑器 word 公式快捷键 (ALT)+(=) 进入公式编辑器 我们的代码就是在这里输入的 2.活用Word自动转换 在Unicode中对某些符号可以自动转换,什么意思呢? 点击我word页面左上角的【文件】【选项】【校对】【自动更正选项(A)…】 然后你就能发现 输入 替换 比如说你打了个[.]+[.]+[.],他就能自动给你替换成[] 还有下面几个
Unicode编码表(全) (非扫描版,可复制)
Unicode编码表(全) 涵盖了世界上所有的字符,每个字符都有对应的独一无二的Unicode编码。自带目录,分类很清晰。整张表可以复制,便于查询。感兴趣的可以查一下。
unicode中文编码表
unicode中文编码表,非常有用的资料, 编程非常有用
unicode表_在Word中使用Unicode输入公式
笔者最近在写大学物理实验报告,其中有大量公式需要输入。在尝试Unicode、LaTeX、MathType、AxMath等输入方式(工具)后,发现在Word中使用Unicode最为舒适、便捷。下面是在Word中使用Unicode的优点。相较于图形化的公式编辑器,输入效率更高。无需购买、安装任何软件,方便快捷。相较于LaTeX,语法简单,易于上手。唯一的缺点是字体不能改成Times New Roman...
Jetson Orin NX上CAN总线调试全攻略:从硬件焊接到开机自启动(附常见问题解决方案)
本文详细介绍了在NVIDIA Jetson Orin NX开发板上进行CAN总线调试的全过程,包括硬件焊接、驱动配置、通信测试和开机自启动设置。针对常见问题如信号接反、波特率设置等提供了实用解决方案,帮助开发者快速实现稳定的CAN总线通信。
Python编解码小结(一)—— Unicode的来龙去脉
历史: 上世纪80年代,大部分电脑使用8bit地址存储。8bit空间(即byte)可以存储0到255的数值。ASCII码选择单字节(0-127)数值作为其标准编码区间(即前127个数字来做字符映射), 而剩下的128-255数值变成各团体、组织自定义分配。注:ASCII标准本身就规定了字符和字符编码方式,ASCII既是字符集又是编码方案。 随着字符数量需求不断增加,Unicode被提上来了
OpenCV视频防抖算法实现与优化指南
本文详细解析了如何使用OpenCV实现视频防抖算法。通过特征点检测与光流跟踪估算帧间运动,利用滑动平均平滑运动轨迹,并应用仿射变换重塑视频帧。文章提供了完整的代码实现、参数调优指南及黑边处理等优化技巧,帮助开发者高效处理手持拍摄等场景下的视频抖动问题。
国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)
本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。
u/c矩阵
U/C矩阵是用来表达过程与数据两者之间的关系。矩阵中的行表示数据类,列表示过程,并以字母U(Use)和C(Create)来表示过程对数据类的使用和产生。 目录 1过程/数据矩阵(U/C矩阵)的含义 2过程/数据矩阵(U/C矩阵)的结构 ▪ U/C矩阵的正确性的检验 ▪ 利用U/C矩阵方法划分子系统的步骤 1过程
5分钟搞懂Paris公式:如何用裂纹扩展速率预测零件寿命(附Python代码示例)
本文详细介绍了Paris公式在裂纹扩展速率预测零件寿命中的应用,通过Python代码示例展示了从理论到实践的完整流程。文章涵盖了Paris公式的工程本质、寿命预测计算流程、几何修正因子选择以及实际案例演示,帮助工程师快速掌握这一关键技术。
面试题20:顺时针打印矩阵
题目:输入一个矩阵,按照从外向里顺时针的顺序依次打印出每个数字。 分析:这个问题比较复杂,借助画出图形分析相对会简便一些。 我们将矩阵想象成若干个圆,用一个循环来打印矩阵,每次打印矩阵中的一个圆。 圆的起点是左上角(start,start),循环条件是columns>startX*2并且rows>rowsY*2。 难点:for循环比较多,注意控制循环的结束条件。
DLMS—Cryptographic algorithms—(Green-Book)加密算法
密码学是数学的一个分支,基于数据的转换,并且可以用来提供多种安全服务:保密性、数据完整性、认证、授权和不可否认性。密码学依赖于两个基本组成部分:算法(或密码学方法)和密钥。算法是一个数学函数,而密钥是在转换过程中使用的参数。密码算法和密钥用于对数据应用密码保护(例如,加密数据或生成数字签名),以及移除或检查保护(例如,解密加密的数据或验证数字签名)。密码哈希函数:这类函数不需要密钥(尽管它们可以以使用密钥的模式使用)。哈希函数通常用作算法的一个组成部分,以提供安全服务。见9.2.3.2节。对称密钥算法。
YOLOv11改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务
本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte
顺时针打印矩阵(编程题讲解)
顺时针打印矩阵题目描述题目分析python代码 《剑指offer》 编程题讲解 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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。 题目分析 这种题目没...
锐捷 MPLS VPN 配置
ISP内部配置 , PE设备和CE设备之间的接口不开启 ( 只在物理接口上配置 , loopback 口不配置 )最后一步关闭 ipv4 单播 , 如果你发现路由奇奇怪怪的 , 可以尝试一下。both --> 同时配置 import export 值。绑定后接口会重置 , 且接口的路由会转到VRF路由表中。这里基本上绑定了 vrf 实例的接口都需要宣告进去。vpnv 4 通道是用来传递 mpls 路由的。先建立邻居管理,建立VPNV4通道。这里要做双向引入 , 才会有路由。export 导出值。
【算法编程】矩阵打印、旋转和查找
一、转圈打印 1、题目描述 给定一个整型矩阵 matrix,请按照转圈的方式打印它。 例如: [12345678910111213141516] \left[ \begin{matrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 &am...
fatal: unable to access ‘https://github.com/‘: Recv failure: Connection was reset 解决方案
本文主要介绍了fatal: unable to access ‘https://github.com/’: Recv failure: Connection was reset 解决方案,希望能对使用github的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
【算法】打印矩阵
题目描述: 转圈打印矩阵【题目】给定一个整型矩阵matrix,请按照转圈的方式打印它。如下图所示; 要求:额外的空间复杂度为0(1)
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
编程题:顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.思路:其实就是采用递归,所谓的顺时针就像围着矩阵转圈圈,先读取第一行数据,之后读最右边列的数据,再读最下行的数据,再读回最左边列的数...
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
剑指Offer对答如流系列 - 顺时针打印矩阵
文章目录面试题29:顺时针打印矩阵一、题目描述二、问题分析三、问题解答 面试题29:顺时针打印矩阵 一、题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 比如:输入以下矩阵 打印出的数字为1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 二、问题分析 每次打印都是打印外面的一圈,每次打印矩阵的起点横纵坐标都相同(横纵坐标值均设置为start),...
回型矩阵的打印问题
一、输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例: 如果输入如下矩阵,则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 分析: 把矩阵看成由若干个顺时针方向的圈组成,循环打印矩阵中的每个圈,每次循环打印一个圈。打印一圈通常分为四步,第一步从左到右打印一行;第二步从上到下打印一列;第三步从右到左打印一行;第四步从下到上打印一列。设置四个变量left,right,top,btm,用于表示圈的方位,每一步根据起始坐标和终止坐标循环打印。注意:最


* print a matrix
* ***************

}
1868



被折叠的 条评论
为什么被折叠?



