0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何输出这样的矩阵呢?

算法与数据结构 ? 来源:小K算法 ? 作者:小K算法 ? 2022-05-13 11:15 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

01 故事起源有这样的一种矩阵,从左上角开始,顺时针从外向里旋转,数字依次递增,如果给定任意行n、列m,请问如何输出这样的矩阵呢? 45346602-d267-11ec-bce3-dac502259ad0.jpg ? ?02 分析这个问题第一眼就觉得很简单,为啥呢,因为规律很明显,问题描述都已经说的很清晰了,只要按照要求模拟一遍就行了。
如果现在让你把这个问题描述给其他人,你是不是也会这样来描述:一直向前走,无路可走向右转。。。 455742bc-d267-11ec-bce3-dac502259ad0.jpg ? ?03 模拟啥是模拟呢,模拟就是按照你的想法,机械的执行命令就可以了,没有啥算法可言,就像这个问题一样。 4572a4f8-d267-11ec-bce3-dac502259ad0.jpg ?不过机器并不能听懂你的高级语言,所以需要翻译一下。 458b2a50-d267-11ec-bce3-dac502259ad0.jpg ?说机话
整个过程拆解为4个步骤:
从矩阵左上角开始向右直到边界;2)向下;3)向左;4)向上。
重复上面4个步骤,直到填满整个矩阵。
45ab891c-d267-11ec-bce3-dac502259ad0.jpg ?于是我们就得到了初步的框架:

			while(还没填满){  //向右直到边界 j++;  //向下直到边界 i++;  //向左直到边界 j--;  //向上直到边界  i--; }
			
									04
									细节从左向右,结束时j超出边界,需要j--。最上一行已填满,上边界下移,同时i也下移。
			45cd85da-d267-11ec-bce3-dac502259ad0.jpg
			?从上向下,结束时i超出边界,需要i--。最右一列已填满,右边界左移,同时j也左移。
			45eb6ece-d267-11ec-bce3-dac502259ad0.jpg
			?其余2个过程同理。
			
										05
										代码实现
#defineROW5
#defineCOLUMN5
voidmain(){
intleft=0,right=COLUMN-1,top=0,bottom=ROW-1;
intf[ROW][COLUMN],i=0,j=0,num=1;
while(i>=top&&i<=?bottom?&&?j?>=left&&j<=?right)?{
????????//left->right
while(j<=?right)?{
????????????f[i][j++]?=?num++;
????????}
????????j--;
????????top++;
????????i++;
????????//top->bottom
while(i<=?bottom)?{
????????????f[i++][j]?=?num++;
????????}
????????i--;
????????right--;
????????j--;
????????//right->left
while(j>=left){
f[i][j--]=num++;
}
j++;
bottom--;
i--;
//bottom->top
while(i>=top){
f[i--][j]=num++;
}
i++;
left++;
j++;
}
}
06 总结模拟问题一般都比较简单,只需要把整个框架过程抽象出来,然后机械的实现即可。但偶尔也会遇到复杂的模拟,一般都是细节涉及的比较多,比如边界信息太多,或者过程太多等。不过这种问题很适合锻炼代码实现能力,多做就能达到“有思想就一定能实现”的状态。 审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模拟
    +关注

    关注

    7

    文章

    1439

    浏览量

    84672
  • 矩阵
    +关注

    关注

    1

    文章

    435

    浏览量

    35369

原文标题:旋转矩阵

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    求助,关于STM32H743使用DSP进行矩阵求逆计算出现的问题求解

    我正在STM32H743上实现一个算法,需要进行一个20*20的矩阵求逆,但是计算结果与matlab对比差距非常大,完全不正确,原矩阵A的部分数值类似如下: 在matlab中求逆的部分结果如下: 但是在STM32H743中的求逆计算结果却是
    发表于 08-08 07:24

    矩阵混音技术快速入门

    A&H矩阵混音技术快速入门Live_Matrix_MixingChinese
    发表于 03-26 14:12 ?0次下载

    DAC7554如果需要同时输出多路不同信号,该怎么实现

    可以利用fpga驱动DAC7554输出单路信号,四路单独输出,或者四路同时输出同样的信号都没有问题 如果需要同时输出多路不同信号,该怎么实现
    发表于 01-06 06:05

    ADXL1001的评估板输出的数据怎么接收

    ADXL1001的评估版按照连接方式连接完VCC接电源,GND接地,然后ST STB也接地,Vout应该会输出结果,输出的数据怎么接收,是根据电平高低来解析吗还是什么其他的协议这样
    发表于 12-19 08:28

    运放的哪项参数或者什么因素会这样影响输出

    如下图是一个直流电压检测电路,设计要求是1000V输出3V,实际使用直流电压一般不会超过800V,现在在使用过程中采集的输出电压在键盘显示一直在上升,输入直流电压基本不会怎么变化,这个过程虽然可能有
    发表于 12-04 08:46

    DAC60501芯片输出是多少

    must be less than 0.7 V for at least 1 ms“ ”When VDD remains greater than 2.2 V, a POR does not occur”是什么意思? 设置VDD=3.3V,不对芯片进行操作,芯片输出
    发表于 11-22 06:51

    ADS1256的输出电路是怎样设计的

    对于ADS1256的输出电路是怎样设计的?一般ADC测试中为了提高输出的驱动能力,防止发射和振铃现象,应该怎样进行设计输出电路
    发表于 11-22 06:01

    tas5612la 24v供电,只使用单通道BTL,这样连接输出声音小,怎么处理?

    如图,24v供电,只使用单通道BTL,这样连接输出声音小,测OUTA对地电压只有8--10V 因此修改,把另一个通道的电源和部分元件也接上,这样似乎正常了,OUTA对地有12v,声音也
    发表于 10-14 07:55

    盛显科技:在拼接处理器上配置混合矩阵的步骤是什么?

    相信大家都知道,在拼接处理器上配置混合矩阵,主要涉及到将混合矩阵输出与拼接处理器的输入相连接,并通过拼接处理器的软件或界面进行配置,以实现多屏显示和视频信号的灵活处理。在此过程中,了解并熟知拼接
    的头像 发表于 09-26 18:09 ?662次阅读

    MATLAB(6)--特殊矩阵

    通用的特殊矩阵 zero函数:产生全是0矩阵,即零矩阵。 ones函数:产生全是1矩阵,即幺矩阵。 eyes函数:产生对角线为1的
    发表于 09-06 10:24

    MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)

    的序号为3。 即我们输入的坐标(1,4),(2,5),(3,1)在矩阵A中的索引号,意思是A矩阵第1行第4个元素的索引值号为16,为什么是16?因为MATLAB是按列搜索的,先搜索第一列,然后搜索
    发表于 09-06 10:11

    MATLAB(2)--MATLAB矩阵的表示

    矩阵的建立 利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵的顺序输入各元素,同一行的各元素之间用逗号或者空格分隔,不同的元素之间用分号分隔。 利用已建好的
    发表于 09-06 10:05

    MATLAB中的矩阵索引

    矩阵进行索引是从矩阵中选择或修改部分元素的一种方式。MATLAB 有几种索引样式,它们不仅功能强大、灵活,而且可读性强、表现力强。矩阵是 MATLAB 用来组织和分析数据的一个核心组件,索引是以可理解的方式有效操作
    的头像 发表于 09-05 09:28 ?1151次阅读
    MATLAB中的<b class='flag-5'>矩阵</b>索引

    机器人的三大矩阵是什么及关系式

    在机器人学中,三大矩阵主要指的是与机器人位移、速度和力相关的矩阵,它们分别揭示了机器人在不同空间(如关节空间和作业空间)之间的映射关系。这三大矩阵及其关系式可以概括如下: 1. T矩阵
    的头像 发表于 09-04 09:37 ?3203次阅读

    TL712的应用电路,输出的波形为什么是这样的?

    我的应用电路如下 输出应该是TTL波形,但是我的输出这样的,幅度应该是5V但是没到,而且上升沿出现这样的问题
    发表于 08-30 08:01