码迷,mamicode.com
首页 > 编程语言 > 详细

随手记——神奇的现象,二维数组

时间:2019-02-11 12:54:28      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:void   http   内存地址   info   sig   下标   .com   内存   维数   

做一道DP的题目,需要标记二维数组中,以某个点为中心边上的八个点(象棋中的“马”下一步可走的位置),然后是这样写的。

void make_mark(int x,int y) {
    sign[x - 1][y - 2] = 1;
    sign[x - 1][y + 2] = 1;
    sign[x + 1][y + 2] = 1;
    sign[x + 1][y - 2] = 1;

    sign[x + 2][y - 1] = 1;
    sign[x + 2][y + 1] = 1;
    sign[x - 2][y - 1] = 1;
    sign[x - 2][y + 1] = 1;

    sign[x][y] = 1;
}

好像是没什么,但是没有处理下标越界的问题。然后OJ还过了。然后我仔细研究了一下。它们的内存地址是连续的,然后数组等价于指针呐,那就很好理解了。

红线内的1,从上往下是sign[x-2][y-1],sign[x-1][y-2],sign[x+1][y-2],sign[x+1][y+2]。

至于OJ过了的原因,因为我数组开大了几个,这几个 1 没有影响。

技术图片

除非你能几个数组确保不会越界,不会影响到题目,否则还是好好做越界判断好一点。

随手记——神奇的现象,二维数组

标签:void   http   内存地址   info   sig   下标   .com   内存   维数   

原文地址:https://www.cnblogs.com/czc1999/p/10361280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!