U8单元测评.编程题1
2025-10-26 11:20:33
发布于:浙江
Unit 8 单元测评 编程题1
以下是AI给的代码 ( 保留注释 , 未简化数组名、变量名、自定义数组名)
#include <iostream>
#include <vector>
#include <string>
#include <queue>
using namespace std;
// 定义一个结构体来存储位置和跳跃次数
struct Node {
    int x, y;
    int jumps;
    Node(int x, int y, int jumps) : x(x), y(y), jumps(jumps) {}
};
const int dirs[8][2] = {{-2, -1}, {-2, 1}, {-1, -2}, {-1, 2}, {1, -2}, {1, 2}, {2, -1}, {2, 1}};
int findMinJumps(vector<string>& grid, int startX, int startY, int endX, int endY) {
    int R = grid.size(), C = grid[0].size();
    vector<vector<bool>> visited(R, vector<bool>(C, false));
    queue<Node> q; // 使用队列存储 Node 结构体
    q.push(Node(startX, startY, 0));
    visited[startX][startY] = true;
    while (!q.empty()) {
        Node current = q.front();
        q.pop();
        // 如果到达终点,返回跳跃次数
        if (current.x == endX && current.y == endY) {
            return current.jumps;
        }// 尝试所有可能的跳跃方向
        for (int i = 0; i < 8; ++i) {
            int nx = current.x + dirs[i][0];
            int ny = current.y + dirs[i][1];
            
            // 检查是否越界或已访问或遇到障碍物
            if (nx >= 0 && nx < R && ny >= 0 && ny < C && !visited[nx][ny] && grid[nx][ny] != '*') {
                visited[nx][ny] = true;
                q.push(Node(nx, ny, current.jumps + 1));
            }
        }
    }// 如果无法到达终点,返回 -1
    return -1;
}
int main() {
    int C, R;
    cin >> C >> R;
    cin.ignore();
    vector<string> grid(R);
    int startX = -1, startY = -1, endX = -1, endY = -1;
    for (int i = 0; i < R; ++i) {
        getline(cin, grid[i]);
        for (int j = 0; j < C; ++j) {
            if (grid[i][j] == 'K') {
                startX = i;
                startY = j;
            }
            if (grid[i][j] == 'H') {
                endX = i;
                endY = j;
            }
        }
    }// 如果起点或终点未找到,返回 -1
    if (startX == -1 || startY == -1 || endX == -1 || endY == -1) {
        cout << -1 << endl;
        return 0;
    }cout << findMinJumps(grid, startX, startY, endX, endY) << endl;
} 
这里空空如也









有帮助,赞一个