gpt4 book ai didi

c++ - 展开同心正方形需要遍历类矩阵图

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:25 25 4
gpt4 key购买 nike

好的,我有一个由链接节点矩阵组成的数据结构,比方说 10x10。我希望能够任意选择这些节点中的任何一个,并且 - 从那里 - 按照扩展同心正方形的模式处理一些周围的节点(出于说明目的,我在下面使用了较少的节点)。就具体细节而言,实现将在 Actionscript 中 - 但请随意用另一种语言回答 :) - 它适用于扫雷游戏(特别是如果点击一 block 无地雷方 block ,它​​们 - 所有- 清除不规则形状,直到周围的地雷)。它还将是基于事件的——为遍历的每个节点调度一个,所以我想象的方式是当迭代器或任何东西遇到包含地雷的字段时,遍历将停止在那个方向上进一步前进,而其余的将继续。这些节点双重链接到它们的顶部、右侧、底部和左侧的邻居,如果有必要,我不反对添加更多链接。可能还有其他方法可以做到这一点,但我可以想到这种解决方案的多种用途,并想将其包含在我正在创建的框架中,所以我想放弃一些我可以重用的东西.

第一:
0 0 0 0 0
0 0 0 0 0
0 0 X 0 0
0 0 0 0 0
0 0 0 0 0

第二个:
0 0 0 0 0
0 X X X 0
0 X 0 X 0
0 X X X 0
0 0 0 0 0

第三:
X X X X X
X 0 0 0 X
X 0 0 0 X
X 0 0 0 X
X X X X X

最佳答案

function scan( x, y ){
queue toDo;
set queued;

toDo.push( x, y );
queued.add( x, y );
while ( !toDo.empty() ) {
(x, y) = toDo.removeHead();

if ( process( x, y ) != stop ) {
for( xp = -1; xp <= 1; ++xp ) {
for( yp = -1; yp <= 1; ++yp ) {
if ( !queued.contains( x+xp, y+yp ) ) {
toDo.push( x+xp, y+yp );
queued.add( x+xp, y+yp );
}
}
}
}
}
}

关于c++ - 展开同心正方形需要遍历类矩阵图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com