跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

CCF-CSP 认证:机器人复健指南题解

综述由AI生成解析 CCF-CSP 认证中机器人移动问题。题目要求在 n×n 网格内,从起点出发,每次可向八个方向跳跃(类似马步),限制最大步数 k。需计算 k 步内可达的方格总数。解决方案采用深度优先搜索(DFS)或广度优先搜索(BFS)。文中提供了基于 DFS 的 C++ 实现代码,包含边界判断与访问标记逻辑,确保统计所有经过位置。

时间旅人发布于 2026/4/6更新于 2026/5/2229 浏览

题目背景

西西艾弗岛某山脉深处出土了一台远古机器人,具体年代已不可考。初步修缮后,研究人员尝试操控机器人进行些简单的移动。

题目描述

整个实验场地被划分为 n×n 个方格,从 (1,1) 到 (n,n) 进行编号。机器人只能在这些方格间移动,不能走出场地范围。如下图所示,假设机器人当前位于 (x,y),那么接下来可以向周围八个方向跳跃移动(如果目标方格在场地范围内):

文章配图

若机器人只能跳动不超过 k 步,场地内有多少方格(包括起始位置)可以抵达?

输入格式

从标准输入读入数据。

输入的第一行包含空格分隔的两个正整数 n 和 k,分别表示场地大小和跳动步数。

输入的第二行包含空格分隔的两个正整数 x 和 y,表示机器人的起始位置(保证位于场地内)。

输出格式

输出到标准输出。

输出一个整数,表示 k 步内可以抵达的方格总数。

样例 1 输入

4 1 1 1 

样例 1 输出

3 

样例 2 输入

4 2 1 1 

样例 2 输出

8 

样例 2 解释

如下图所示,初始位置、第一步和第二步跳跃抵达的位置总计为 8。

文章配图

子任务

80% 的测试数据满足:k≤3;

全部的测试数据满足:n、k 均大于 0 且不超过 100。

题解

可以使用 BFS 或 DFS 进行搜索。在 DFS 实现中,步数作为递归函数的参数传递;而在 BFS 实现中,步数需要作为队列元素的附加参数存储。

实现细节

dx 和 dy 数组分别表示移动方向,st 数组用于记录访问状态,全局变量 cnt 统计已访问节点的数量。需要特别处理边界判断,同时统计的节点数包括所有经过的位置,而不仅仅是终点。

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int n, k, x, y;
int a[N][N];
bool st[N][N];
 dx[] = {, , , , , , , };
 dy[] = {, , , , , , , };
 cnt;

{
    st[x][y] = ;
    cnt++;
     (num == k) ;
     ( i = ; i < ; i++) {
         nx = x + dx[i];
         ny = y + dy[i];
         (nx <  || nx > n || ny <  || ny > n) ;
         (!st[nx][ny]) {
            (nx, ny, num + );
        }
    }
}

{
    cin >> n >> k >> x >> y;
    (x, y, );
    cout << cnt;
}
int
8
1
2
1
2
-1
-2
-1
-2
int
8
2
1
-2
-1
2
1
-2
-1
int
void dfs(int x, int y, int num)
true
if
return
for
int
0
8
int
int
if
1
1
continue
if
dfs
1
int main()
dfs
0

目录

  1. 题目背景
  2. 题目描述
  3. 输入格式
  4. 输出格式
  5. 样例 1 输入
  6. 样例 1 输出
  7. 样例 2 输入
  8. 样例 2 输出
  9. 样例 2 解释
  10. 子任务
  11. 题解
  12. 实现细节
  13. 代码
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Shell 脚本运行时修改引发的执行异常分析
  • 前端首屏加载优化落地清单与实战指南
  • Libvio.link 爬虫技术详解
  • Java Spring 核心:Bean 作用域、生命周期与自动配置
  • VR + 具身智能 + 人形机器人:通往现实世界的智能接口
  • Kafka 核心机制与架构深度解析
  • 飞算 JavaAI 本地化智能编程工具实战解析
  • ToDesk ToClaw AI 科技新闻日报自动化实战
  • faster-whisper 异步批处理架构解析:性能优化与高并发
  • NWPU VHR-10 遥感目标检测数据集介绍与 YOLO 训练实战
  • WeTTY 运维监控实战:构建企业级 Web 终端管理
  • AI 绘画技术解析与商业化变现实战指南
  • 交通流量预测实战:用 GCN 构建城市路网预测模型(PeMS 数据集+PyTorch Geometric)
  • ESP32 小智 AI 机器人开发:原理与云端部署实战
  • TCP/IP 协议详解:网络层与传输层核心机制
  • YOLOv8/v11 Web 目标检测与人脸表情识别系统 Django+Vue3 前后端分离 LLM 智能分析
  • Open WebUI Docker 部署:容器化最佳实践
  • Java 集成高德开放平台 WebAPI 实践:POI 搜索 2.0
  • VR + 具身智能 + 人形机器人:构建现实世界的智能接口
  • C++ 基于正倒排索引的 Boost 搜索引擎核心模块实现与详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online