CCF-CSP第38次认证第二题——机器人复健指南(满分题解)

题目背景

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

题目描述

整个实验场地被划分为 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},dy[8]={2,1,-2,-1,2,1,-2,-1}; int cnt; void dfs(int x,int y,int num){ st[x][y]=true; cnt++; if(num==k)return; for(int i=0;i<8;i++){ int a=x+dx[i],b=y+dy[i]; if(a<1||a>n||b<1||b>n)continue; if(!st[a][b]){ dfs(a,b,num+1); } } } int main(){ cin>>n>>k>>x>>y; dfs(x,y,0); cout<<cnt; } 

Read more

OpenClaw基础-3-telegram机器人配置与加入群聊

OpenClaw基础-3-telegram机器人配置与加入群聊 💡 大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AI编程、AI自动化和自媒体。 Openclaw的优势是接入各种聊天工作,在前面的文章里,已经介绍了如何接入飞书。但之前我也提到了,飞书的最大的问题是请求多的限制,以及无法在非认证企业账号下面组建群聊。但这些限制另一个聊天工具可以打破,那就是Telegram,今天就跟大家分享一下,如果在OpenClaw里面接入Telegram。 第一步:Openclaw端配置 通过命令openclaw config,local→channels→telegrams 这里等待输入API Token,接下来我们去Telegram里面获取 第二步:Telegram端配置 1. 1. 在聊天窗口找到BotFather,打开对话与他私聊 2. 3. 然后再输入一个机器人,再输入一个账号名username,这里面要求以Bot或者Bot结尾,这个是全网的id,要 2. /newbot 来创建一个机器人,输入一个名字name

【FPGA】Vivado 保姆级安装教程 | 从官网下载安装包开始到安装完毕 | 每步都有详细截图说明 | 支持无脑跟装

【FPGA】Vivado 保姆级安装教程 | 从官网下载安装包开始到安装完毕 | 每步都有详细截图说明 | 支持无脑跟装

安装包下载:Xilinx_Vivado Download Link(下好后可直接安装) 目录 (有安装包后,可直接跳转至 Step5,免得去官网下了,比较麻烦) Step1:进入官网 Step2:注册账号 Step3:进入下载页面 Step4:下载安装包 Step5:安装 Step6:等待软件安装完成 安装完成 Step1:进入官网 ① 我们可以选择在 XILINX 官网下载其公司旗下的产品 Vivado 🔍 官网地址:www.xilinx.com           (英文)www.china.xilinx.com  (官方中文网站) 👉 点击直达:Xilinx - Adaptable. Intelligent | together we advance_    (英文)

VLM经典论文阅读:【综述】An Introduction to Vision-Language Modeling

VLM经典论文阅读:【综述】An Introduction to Vision-Language Modeling

VLM经典论文阅读:【综述】An Introduction to Vision-Language Modeling * 【前言】论文简介 🍀 * 1、介绍(Introduction)🐳 * 2、视觉语言模型家族(The Families of VLMs) 🌟 * 2.1 基于Transformer的早期VLM工作(Early work on VLMs based on transformers) * 2.2 基于对比学习的VLM(Contrastive-based VLMs) * 2.2.1 CLIP * 2.3 掩码目标视觉语言模型(VLMs with masking objectives) * 2.3.1 FLAVA * 2.3.

无人机和地面站能够达到的多远的通信距离?无人机需要飞多高?附在线计算网页

无人机和地面站能够达到的多远的通信距离?无人机需要飞多高?附在线计算网页

无人机和地面站能够达到的多远的通信距离?无人机需要飞多高?附在线计算网页 在无人机组网通信中,如何估算无人机与地面站之间的稳定通信距离是一个常见的问题。本文将从地球曲率和菲涅尔区两个方面,详细探讨如何计算无人机与地面站的通信距离,并提供一个在线计算网页以方便读者进行实际计算。 经常有朋友会问到这个问题, * 无人机组网通信中,如果已经知道了无人机的飞行高度、地面站天线的高度,那么无人机和地面站稳定通信距离是多少km? * 无人机组网通信中,如果已经知道了地面站天线高度、期望的稳定通信距离,无人机需要飞多高才能满足期望的通信距离? 解答这个问题,需要从以下两个方面来考虑: 1. 无线通信距离受到地球曲率的影响 2. 无线通信距离受到空间传输通道的影响。 注意:本文不讨论由于发射端EIRP不够,链路余量不足引起的通信距离不足的问题,所有的计算和分析都是假设发射端EIRP足够,链线余量足够,仅仅考虑地球曲率和空间传输通道的影响。 地球曲率(无线信号传输的视距模型):解决能否看见的问题 无人机与地面电台之间的最远通讯距离受地球曲率限制,通常采用考虑大气折射的无线电视距