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

CCF-CSP 认证第二题:机器人移动范围计算题解

对 CCF-CSP 认证中的机器人移动问题提供题解。题目要求在 n×n 的网格中,从给定起点出发,在 k 步内可到达的方格总数。采用 BFS 或 DFS 搜索算法,通过方向数组遍历八个跳跃方向,统计访问过的节点数量。代码使用 C++ 实现,包含边界检查与访问标记。

忘忧发布于 2026/4/6更新于 2026/7/442 浏览

题目背景

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

题目描述

整个实验场地被划分为 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];
int dx[8] = {1, 2, 1, 2, -1, -2, -1, -2};
int dy[8] = {, , , , , , , };
 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;
     ;
}
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
if
1
1
continue
if
dfs
1
int main()
dfs
0
return
0

目录

  1. 题目背景
  2. 题目描述
  3. 输入格式
  4. 输出格式
  5. 样例 1 输入
  6. 样例 1 输出
  7. 样例 2 输入
  8. 样例 2 输出
  9. 样例 2 解释
  10. 子任务
  11. 题解
  12. 实现细节
  13. 代码
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Java 日期时间 API 详解:从 Date、Calendar 到 java.time
  • 新版 llama.cpp 使用及本地部署 LLaMA 模型指南
  • Java 常用注解扩展对比
  • ANSYS Workbench 接触算法类型及设置详解
  • F5 刷新时浏览器前端发生了什么?
  • Android 设计模式:Builder 模式详解与应用
  • 基于深度学习的 Python 音频特征提取与分类实战
  • DataX 二进制与源码部署及 DataX-Web 可视化平台搭建
  • Lostlife2.0 任务系统智能化:Llama-Factory 驱动动态任务生成
  • LLaMA-Factory 详细安装与配置指南
  • Cursor 中配置与使用 MCP 服务指南
  • 基于 Ocelot+Nacos+WebAPI 的网关鉴权实现
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调实践
  • Open-Lovable 本地部署与远程访问指南
  • Python 工程师常见基础面试题
  • C++卡尔曼滤波库:原理与实战应用
  • llama.cpp llama-server 从命令行到 HTTP Server 实战与架构解析
  • 多传感器数据融合算法理论基础
  • Sora2 API 使用与接入实践
  • AMD 显卡部署 llama.cpp 兼容性问题解决与优化

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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