GESP 八级 · GESP 202603 C++ 八级 第 11 题

选择题 · 答案 C · 考点:算法、循环结构

← 整套速查表 GESP 八级 全部真题

题目

下列代码试图实现 Floyd 算法求所有点对之间的最短路径,横线处应填入( )。

void floyd(int n, int dist[][MAXN]) {
    for (int k = 0; k < n; k++)
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                if (___________ ) // 在此处填入选项
                    dist[i][j] = dist[i][k] + dist[k][j];
}
答案:C

考点

算法循环结构

解题思维

位运算:&(与)、|(或)、^(异或)、~(取反)、<<(左移)、>>(右移)。异或性质:a^a=0,a^0=a。

常见错误

区分逻辑运算(&&,||,!)和位运算(&,|,~,!)。左移右移注意符号位的处理(算术右移vs逻辑右移)。负数的位运算要小心。

详细解析(节选)

【考点】动态规划(Floyd 算法)|状态转移与不可达处理|三重循环结构

1. 🎯 考纲定位

GESP 八级明确要求掌握 Floyd 算法求全源最短路。命题人专门出这道题,就是要卡住大量考生对 Floyd 核心条件理解不清的弱点——很多人只会背dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]),却忘了在只有if语句时,必须同时保证路径可达且更优。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断