ӄօɮɛ☆
2022-04-12T04:40:25+00:00
例如在二维数组nums[][]中一点(x,y)。
要对(x+1,y)(x-1,y)(x,y+1)(x,y-1)四个位置进行相同的操作,代码怎么写能简洁一点。
相同的代码写四遍感觉好蠢。
两个for循环是9个点,判断是否是要找的四个点条件也要写好长……
封装一个函数,返回**指针数组,这个数组有4个指针。
这样外部就可以直接遍历这个指针数组来访问了。
[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[]=
思路等同于最多只遍历一遍的条件下,找出单向链表的倒数第n个节点
point.getNeiboughers.forEach {} 就好了。
再写个函数,把xy导入以后再来个+1 -1 +1 -1的循环呗。。未必要写在一个里啊
[quote][pid=603533318,31504029,1]Reply[/pid] Post by [uid=202017]199fly[/uid] (2022-04-16 12:54):
写一个带参数的函数,把坐标当参数赋进去不行吗?[/quote]还得传数组,数组老大了……
dir = {(1,0),(0,1),(-1,0),(0,-1)}
整个花活[s:ac:哭笑]
for一个i从0到3的循环
对每个循环变量,x坐标加上它的(i / 2 - 1) * 2 + 1
y坐标加上它的(i mod 2 - 1) * 2 + 1
编译器应该会自动转化成位运算,如果强迫症的话也可以自己用位运算语句写