第12课-单元测评(五)组合题T1
2025-11-14 20:06:51
发布于:浙江
组合题 T1
给出一个 n 行 m 列的迷宫,求从左上角走到右下角最少走过的格子数(左上角的格子也计算在内),只能在水平方向或垂直方向走,不能斜着走。
试补全程序
#include <bits/stdc++.h>
using namespace std;
char MAP[49][49];
bool vis[49][49];
struct node {
int x, y, step;
}l,r;
int dir[4][2] = { {-1,0} ,{0,1},{1,0}, _①_};
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> MAP[i] + 1;
}
queue<node> q;
q.push(_②_);
③
while (q.size()) {
r = q.front();
q.pop();
if (r.x == n && r.y == m) {
cout << r.step;
break;
}
for (int i = 0; i < 4; i++) {
l.x = r.x + dir[i][0];
l.y = r.y + dir[i][1];
l.step = r.step + 1;
if (l.x >= 1 && l.x <= n && l.y >= 1 && l.y <= m && ④ && MAP[l.x][l.y] == '.') {
vis[l.x][l.y] = 1;
⑤
}
}
}
return 0;
}
(1)①处应填()
A.{-1,0}
B.{-1,1}
C.{-1,-1}
D.{0,-1}
正确答案:
D
答案解析:
D,方向数组,只差一个往左走的{0,-1}。
(2).②处应填()
A.{0,0,0}
B.{0,0,1}
C.{1,1,1}
D.{1,1,0}
正确答案:
C
答案解析:
C,通过代码分析,可以知道左上角在(1,1)位置,题目说左上角的格子也是计算在内的。
(3).③处应填()
A.vis [ 0 ] [ 0 ]=1
B.vis [ 1 ] [ 1 ]=1
C.vis [ 0 ] [ 0 ]=0
D.vis [ 1 ] [ 1 ]=0
正确答案:
B
答案解析:
B,(1,1)已经放进队列,要标记为true
(4).④处应填()
A.!vis [ x ] [ y ]
B.!vis [ r.x ] [ r.y ]
C.vis [ l.x ] [ l.y ]=0
D.!vis [ l.x ] [ l.y ]
正确答案:
D
答案解析:
D,l位置没有被标记过才能走过去。
(5).⑤处应填()
A.vis [ l.x ] [ l.y ]=0
B.vis [ r.x ] [ r.y ]=0
C.q.push(l)
D.q.push(r)
正确答案:
C
答案解析:
C,l位置能够走过去,则需要放进队列中
答案:DCBDC
全部评论 5
666666666666666666666666666666666666666666666666666666666666
2025-11-14 来自 浙江
1












































2025-11-14 来自 浙江
1niubi
2025-11-14 来自 浙江
1666666666666666666
2025-11-14 来自 浙江
1





2025-11-14 来自 浙江
1























有帮助,赞一个