偏移量技巧(c++)

本文介绍了如何利用偏移量技巧解决二维数组和二维平面上的问题,特别是以蛇形矩阵为例,详细阐述了如何通过偏移量控制数组元素的填充方向。在蛇形矩阵中,数字1到n×m按回字形路径填充。文章提供了输入输出格式、数据范围以及思路解析,并给出了C++代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

南昌理工acm集训

  许多二维的数组题或者二维上的题目都需要去改变指针的走向,一般来说最直接的都是写判断句然后改变方向,但如果用偏移量来控制方向相比下要简单的多。

主要思路

1:把二维平面作一个直角坐标系。

2:往不同方向移动xy的值也会改变。

3:而这些偏移量可以记录移动的方向也能控制移动的方向。

代表性题目:蛇形矩阵

输入两个整数 nn 和 mm,输出一个 nn 行 mm 列的矩阵,将数字 11 到 n×mn×m 按照回字蛇形填充至矩阵中。

具体矩阵形式可参考样例。

输入格式

输入共一行,包含两个整数 nn 和 mm。

输出格式

输出满足要求的矩阵。

矩阵占 nn 行,每行包含 mm 个空格隔开的整数。

数据范围

1≤n,m≤1001≤n,m≤100

输入样例:

3 3

输出样例:

1 2 3
8 9 4
7 6 5

思路:据题意我们需要这个数组从(0,0)开始直到第一行结束,然后向下也是顺时针旋转90°再到这一列结束然后再重复,如果(x,y)向上则加上(0,1),向右加(1,0),下(0,-1),右(1,0)设两偏移量dx,dy从而控制方向。

代码实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值