编程系列之:矩阵打印

顺时针打印矩阵 题目描述:输入一个矩阵,按照从外向里以顺时针打印出每一个数字,例如:输入如下矩阵,则依次打印出的数字为:1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10.思路分析:当我们顺时针打印该矩阵时,每一圈的起始位置是左上角的元素,并且每一圈左上角元素都有一个共同点:它的行和列所对应的的下标都是相同的。因此不难想到,该矩阵打印结束的条件就是左上角的元素下标走到了该矩阵行和列的一半... 阅读详情
 题目描述:
打印如下形式的矩阵;
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 打印环形矩阵 python 题目:输入一个整数N,打印出从1~NN的NN矩阵。 比如N = 3,构成矩阵: 1 2 3 8 9 4 7 6 5 N=5时,构成矩阵: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 对于输入的整数,安行输出回形矩阵。 输入:3 输出:1 2 3 8 9 4 7 6 5 // A... 阅读详情

相关推荐

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

Lynette_bb的博客 1868

C/C++ 打印矩阵【简单易懂,代码可以直接运行】

C/C++ 打印矩阵【简单易懂,代码可以直接运行】 水题,不过需要记住数组传入自定义函数时的规则 1.在main函数内部:直接写入数组名a,b之类的 2.在型参处,要写入a[]或a[数字],如果时二维数组,则只能省略第一个[]内的3.数字,第二个[]内的数字不能省略!! 4.修改后的数组不用return返回出来,它会在主函数内自动修改 5.最重要的一点,传入形参的数组时指向数组的指针而不是数组本身,不要在自定义函数内部求解数组的长度,64位的电脑用sizeof求出来的永远是8,32位永远是4。 给定一个 r

于笨笨的博客 8983

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)…】 然后你就能发现 输入 替换 比如说你打了个[.]+[.]+[.],他就能自动给你替换成[] 还有下面几个

qq_39778404的博客 7063

Unicode编码表(全) (非扫描版,可复制)

Unicode编码表(全) 涵盖了世界上所有的字符,每个字符都有对应的独一无二的Unicode编码。自带目录,分类很清晰。整张表可以复制,便于查询。感兴趣的可以查一下。

unicode中文编码表

unicode中文编码表,非常有用的资料, 编程非常有用

unicode表_在Word中使用Unicode输入公式

笔者最近在写大学物理实验报告,其中有大量公式需要输入。在尝试Unicode、LaTeX、MathType、AxMath等输入方式(工具)后,发现在Word中使用Unicode最为舒适、便捷。下面是在Word中使用Unicode的优点。相较于图形化的公式编辑器,输入效率更高。无需购买、安装任何软件,方便快捷。相较于LaTeX,语法简单,易于上手。唯一的缺点是字体不能改成Times New Roman...

weixin_39769703的博客 2101

Jetson Orin NX上CAN总线调试全攻略:从硬件焊接到开机自启动(附常见问题解决方案)

本文详细介绍了在NVIDIA Jetson Orin NX开发板上进行CAN总线调试的全过程,包括硬件焊接、驱动配置、通信测试和开机自启动设置。针对常见问题如信号接反、波特率设置等提供了实用解决方案,帮助开发者快速实现稳定的CAN总线通信。

c2d3e4f的博客 1076

Python编解码小结(一)—— Unicode的来龙去脉

历史: 上世纪80年代,大部分电脑使用8bit地址存储。8bit空间(即byte)可以存储0到255的数值。ASCII码选择单字节(0-127)数值作为其标准编码区间(即前127个数字来做字符映射), 而剩下的128-255数值变成各团体、组织自定义分配。注:ASCII标准本身就规定了字符和字符编码方式,ASCII既是字符集又是编码方案。 随着字符数量需求不断增加,Unicode被提上来了

wwjiang_ustc的专栏 729

OpenCV视频防抖算法实现与优化指南

本文详细解析了如何使用OpenCV实现视频防抖算法。通过特征点检测与光流跟踪估算帧间运动,利用滑动平均平滑运动轨迹,并应用仿射变换重塑视频帧。文章提供了完整的代码实现、参数调优指南及黑边处理等优化技巧,帮助开发者高效处理手持拍摄等场景下的视频抖动问题。

weixin_29062823的博客 339

国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)

本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。

weixin_33670786的博客 422

u/c矩阵

U/C矩阵是用来表达过程与数据两者之间的关系。矩阵中的行表示数据类,列表示过程,并以字母U(Use)和C(Create)来表示过程对数据类的使用和产生。 目录 1过程/数据矩阵(U/C矩阵)的含义 2过程/数据矩阵(U/C矩阵)的结构 ▪ U/C矩阵的正确性的检验 ▪ 利用U/C矩阵方法划分子系统的步骤 1过程

smile_dyf的专栏 4272

5分钟搞懂Paris公式:如何用裂纹扩展速率预测零件寿命(附Python代码示例)

本文详细介绍了Paris公式在裂纹扩展速率预测零件寿命中的应用,通过Python代码示例展示了从理论到实践的完整流程。文章涵盖了Paris公式的工程本质、寿命预测计算流程、几何修正因子选择以及实际案例演示,帮助工程师快速掌握这一关键技术。

weixin_29309475的博客 426

面试题20:顺时针打印矩阵

题目:输入一个矩阵,按照从外向里顺时针的顺序依次打印出每个数字。 分析:这个问题比较复杂,借助画出图形分析相对会简便一些。 我们将矩阵想象成若干个圆,用一个循环来打印矩阵,每次打印矩阵中的一个圆。 圆的起点是左上角(start,start),循环条件是columns>startX*2并且rows>rowsY*2。 难点:for循环比较多,注意控制循环的结束条件。

xiao1ni1zi的专栏 503

DLMS—Cryptographic algorithms—(Green-Book)加密算法

密码学是数学的一个分支,基于数据的转换,并且可以用来提供多种安全服务:保密性、数据完整性、认证、授权和不可否认性。密码学依赖于两个基本组成部分:算法(或密码学方法)和密钥。算法是一个数学函数,而密钥是在转换过程中使用的参数。密码算法和密钥用于对数据应用密码保护(例如,加密数据或生成数字签名),以及移除或检查保护(例如,解密加密的数据或验证数字签名)。密码哈希函数:这类函数不需要密钥(尽管它们可以以使用密钥的模式使用)。哈希函数通常用作算法的一个组成部分,以提供安全服务。见9.2.3.2节。对称密钥算法。

一个bug是bug,多个bug能work 1706

YOLOv11改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 1496

顺时针打印矩阵(编程题讲解)

顺时针打印矩阵题目描述题目分析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。 题目分析    这种题目没...

August-us的博客 1万+

锐捷 MPLS VPN 配置

ISP内部配置 , PE设备和CE设备之间的接口不开启 ( 只在物理接口上配置 , loopback 口不配置 )最后一步关闭 ipv4 单播 , 如果你发现路由奇奇怪怪的 , 可以尝试一下。both --> 同时配置 import export 值。绑定后接口会重置 , 且接口的路由会转到VRF路由表中。这里基本上绑定了 vrf 实例的接口都需要宣告进去。vpnv 4 通道是用来传递 mpls 路由的。先建立邻居管理,建立VPNV4通道。这里要做双向引入 , 才会有路由。export 导出值。

dekangzou的博客 1710

【算法编程】矩阵打印、旋转和查找

一、转圈打印 1、题目描述 给定一个整型矩阵 matrix,请按照转圈的方式打印它。 例如: [12345678910111213141516] \left[ \begin{matrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 5 &amp; 6 &amp; 7 &amp; 8 \\ 9 &am...

Daycym的博客 535

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. 解决方案

weixin_43178406的博客 2万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【算法】打印矩阵

题目描述: 转圈打印矩阵【题目】给定一个整型矩阵matrix,请按照转圈的方式打印它。如下图所示; 要求:额外的空间复杂度为0(1)

博客 1694

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.思路:其实就是采用递归,所谓的顺时针就像围着矩阵转圈圈,先读取第一行数据,之后读最右边列的数据,再读最下行的数据,再读回最左边列的数...

灰太狼 969

怀旧版电脑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),...

明月沉江春雾晓 1170

回型矩阵的打印问题

一、输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例: 如果输入如下矩阵,则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 分析: 把矩阵看成由若干个顺时针方向的圈组成,循环打印矩阵中的每个圈,每次循环打印一个圈。打印一圈通常分为四步,第一步从左到右打印一行;第二步从上到下打印一列;第三步从右到左打印一行;第四步从下到上打印一列。设置四个变量left,right,top,btm,用于表示圈的方位,每一步根据起始坐标和终止坐标循环打印。注意:最

much efforts, much luck 976
上一篇: ubuntu 解决gvim菜单消失
下一篇: 一篇值得一读的文章
unicode1985
博客等级 码龄22年 2粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值