下面程序片段主要体现的算法思想是( )。
void dfs(int x, int y) {
vis[x][y] = true;
for (int k = 0; k < 4; k++) {
int nx = x + dx[k], ny = y + dy[k];
if (inside(nx, ny) && a[nx][ny] == 1 && !vis[nx][ny])
dfs(nx, ny);
}
}逻辑代数运算:与(∧/×)、或(∨/+)、非(┐/¬)。德摩根律:┐(A∧B)=┐A∨┐B,┐(A∨B)=┐A∧┐B。
注意德摩根律的正确应用:┐(A∧B)=┐A∨┐B,┐(A∨B)=┐A∧┐B。C++中逻辑运算符有短路求值特性。
【考点】递归搜索|图遍历|连通块计数
GESP 七级《递归与算法设计》模块核心考点。命题人专门在七级卡"连通块识别"——这正是绝大多数考生会混淆 DFS/BFS 应用场景的薄弱点,所以用这段最典型的代码来区分"会递归"和"懂算法思想"两个层级。