遍历一个二维数组中某一点的上下左右四个位置,代码怎么写简洁一点?

ӄօɮɛ☆-avatar

ӄօɮɛ☆

2022-04-12T04:40:25+00:00

例如在二维数组nums[][]中一点(x,y)。
要对(x+1,y)(x-1,y)(x,y+1)(x,y-1)四个位置进行相同的操作,代码怎么写能简洁一点。
相同的代码写四遍感觉好蠢。
两个for循环是9个点,判断是否是要找的四个点条件也要写好长……
licky-avatar

licky

封装一个函数,返回**指针数组,这个数组有4个指针。
这样外部就可以直接遍历这个指针数组来访问了。
$aw.C Mystic-avatar

$aw.C Mystic

[quote][tid=31504029]Topic[/tid] Post by [uid=26261591]末日天启骑士[/uid] (2022-04-16 12:49):

例如在二维数组nums[][]中一点(x,y)。
要对(x+1,y)(x-1,y)(x,y+1)(x,y-1)四个位置进行相同的操作,代码怎么写能简洁一点。
相同的代码写四遍感觉好蠢。
两个for循环是9个点,判断是否是要找的四个点条件也要写好长……[/quote]Int dx[] =
Int dy[]=
Caronte-avatar

Caronte

写一个带参数的函数,把坐标当参数赋进去不行吗?
CRS22-avatar

CRS22

写个函数,调用四次。
DooDooFart19.2-avatar

DooDooFart19.2

思路等同于最多只遍历一遍的条件下,找出单向链表的倒数第n个节点
Park-avatar

Park

point.getNeiboughers.forEach {} 就好了。
Knightless-avatar

Knightless

再写个函数,把xy导入以后再来个+1 -1 +1 -1的循环呗。。未必要写在一个里啊
Kkwateh-avatar

Kkwateh

传坐标和lambda表达式
ӄօɮɛ☆-avatar

ӄօɮɛ☆

[quote][pid=603533318,31504029,1]Reply[/pid] Post by [uid=202017]199fly[/uid] (2022-04-16 12:54):

写一个带参数的函数,把坐标当参数赋进去不行吗?[/quote]还得传数组,数组老大了……
KikyoHoax-avatar

KikyoHoax

dir = {(1,0),(0,1),(-1,0),(0,-1)}
Bad Friend Matt-avatar

Bad Friend Matt

整个花活[s:ac:哭笑]
for一个i从0到3的循环
对每个循环变量,x坐标加上它的(i / 2 - 1) * 2 + 1
y坐标加上它的(i mod 2 - 1) * 2 + 1
编译器应该会自动转化成位运算,如果强迫症的话也可以自己用位运算语句写