C++程序用于找出机器人在网格中到达特定单元所需的跳跃次数

2023年 9月 17日 85.8k 0

C++程序用于找出机器人在网格中到达特定单元所需的跳跃次数

假设我们有一个 h x w 的网格。网格在一个名为 'initGrid' 的二维数组中表示,其中网格中的每个单元格都用 '#' 或 '.' 表示。 '#' 表示网格中有障碍物,'.' 表示该单元格上有一条路径。现在,一个机器人被放置在网格上的一个单元格 'c' 上,该单元格具有行号 x 和列号 y。机器人必须从一个具有行号 p 和列号 q 的单元格 'd' 移动到另一个单元格。单元格坐标 c 和 d 都以整数对的形式给出。现在,机器人可以按以下方式从一个单元格移动到另一个单元格:

  • 如果机器人想要移动到的单元格位于当前单元格的垂直或水平相邻位置,机器人可以直接从一个单元格走到另一个单元格。

  • 机器人可以跳到以其当前位置为中心的 5x5 区域中的任何单元格。

  • 机器人只能移动到不包含障碍物的网格中的另一个单元格。机器人也不能离开网格。

我们需要找出机器人到达目标所需的跳数。

因此,如果输入为 h = 4,w = 4,c = {2, 1},d = {4, 4},initGrid = {"#...", ".##.", "...#", "..#."},那么输出将为 1。机器人只需要一次跳跃就可以到达目的地。

为了解决这个问题,我们将按照以下步骤进行:

N:= 100
Define intger pairs s and t.
Define an array grid of size: N.
Define an array dst of size: N x N.
Define a struct node that contains integer values a, b, and e.
Define a function check(), this will take a, b,
   return a >= 0 AND a = 0 AND b dst[a value of nd, b value of nd], then:
         Ignore the following part, skip to the next iteration
   for initialize diffx := -2, when diffx 1, then 1, otherwise 0)
         if dst[a value of nd, b value of nd] + w 登录后复制

Example

让我们看下面的实现以获得更好的理解−

#include
using namespace std;
const int INF = 1e9;
#define N 100
int h, w;
pair s, t;
string grid[N];
int dst[N][N];
struct node {
   int a, b, e;
};
bool check(int a, int b) {
   return a >= 0 && a = 0 && b doubleq;
   doubleq.push_back({a, b, dst[a][b]});

   while (!doubleq.empty()) {
      node nd = doubleq.front();
      doubleq.pop_front();
      if (nd.e > dst[nd.a][nd.b])
         continue;
      for (int diffx = -2; diffx 1) ? 1 : 0;
               if (dst[nd.a][nd.b] + w c, pair d, string initGrid[]){
   s = c;
   t = d;
   s.first--, s.second--, t.first--, t.second--;
   for(int i = 0; i c = {2, 1}, d = {4, 4};
   string initGrid[] = {"#...", ".##.", "...#", "..#."};
solve(c, d, initGrid);
return 0;
}

登录后复制

输入

4, 4, {2, 1}, {4, 4}, {"#...", ".##.", "...#", "..#."}

登录后复制

输出

1

登录后复制

以上就是C++程序用于找出机器人在网格中到达特定单元所需的跳跃次数的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论