二维数组与坐标系之间的关系

        事情的起因是做到了一道旋转矩阵的题目,虽然本身不难,但是一想到坐标的表示,就感受到了脑干缺失的痛苦

首先要说明的是,我们习惯的坐标系其实只要x表示列,y表示行即可,原点位置的改变理解起来问题不大。但是,原点坐标假定的错误是可能会导致问题的。

考虑这样一个数字依次排列的坐标系,存储它的数组是arr[x][y]

 在二维数组中,我们通常把前一个[]中的当成行,后一个的当成列。毕竟监视窗口是这样显示,输入时也是这种顺序。

 因此,我们暂且把二维数组的x、y轴这样划分

 

而我们习惯的坐标系有这两种(应该没人会喜欢把原点设在右边罢)

 左边这种是一个很常见的陷阱!

因为对于二维数组本身排列顺序的理解,导致我们可能会把原点放到左上角,但又习惯了xy轴的排布,就会出现这种情况。接下来,让我们看看数字8:在左边的坐标系中,8是(3,2),但在实际调用中,它应该是(2,3),这便导致了错误


而右边这种则是正确,原因很简单,我们只要把它顺时针旋转90°就得到了二维数组的坐标系

对于一般情况,这样按照右边这种坐标系使用就OK了,但是如果在控制台输入一张地图,并且对方向有着明确的规定,那就可能会出现问题


比如来源于P1518这道题的地图

*...*.....
......*...
...*...*..
..........
...*.F....
*.....*...
...*......
..C......*
...*.*....
.*.*......

 按照实际储存,C的坐标是(8,3),而对于一般认知它是(3,3)。假如我们要让C向上移动一格,对于一般认知是y轴++,但对于一个二维数组arr[x][y],它需要x--(列变小),很反人类对吧。

解决方法

        在题设没有给定方向的情况下,我们把它看作逆时针旋转90°的样子,就能以一般认知来取坐标了。但如果给定了方向,则要记住别把xy轴搞错了哟

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值