목차
Example
Input
Output
백엔드 개발 C++ 로봇이 그리드의 특정 셀에 도달하기 위해 필요한 점프 횟수를 찾는 C++ 프로그램

로봇이 그리드의 특정 셀에 도달하기 위해 필요한 점프 횟수를 찾는 C++ 프로그램

Sep 17, 2023 pm 07:17 PM
기계 인간 그리드 점프 횟수

로봇이 그리드의 특정 셀에 도달하기 위해 필요한 점프 횟수를 찾는 C++ 프로그램

h x w의 그리드가 있다고 가정합니다. 그리드는 'initGrid'라는 2차원 배열로 표시되며 그리드의 각 셀은 '#' 또는 '.'으로 표시됩니다. '#'은 그리드에 장애물이 있음을 의미하고, '.'은 해당 셀에 경로가 있음을 의미합니다. 이제 로봇은 행 번호 x와 열 번호 y가 있는 그리드의 'c' 셀에 배치됩니다. 로봇은 행 번호가 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 < h AND b >= 0 AND b < w
Define a function bfs(), this will take a, b,
   for initialize i := 0, when i < h, update (increase i by 1), do:
   for initialize j := 0, when j < w, update (increase j by 1), do:
      dst[i, j] := infinity
   dst[a, b] := 0
   Define one deque doubleq
   Insert a node containing values {a, b, and dst[a, b]} at the end of doubleq
   while (not doubleq is empty), do:
      nd := first element of doubleq
      if e value of nd > 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 <= 2, update (increase diffx by 1), do:
   for initialize diffy := -2, when diffy <= 2, update (increase diffy by 1), do:
      tm := |diffx + |diffy||
      nx := a value of nd + diffx, ny = b value of nd + diffy
      if check(nx, ny) and grid[nx, ny] is same as &#39;.&#39;, then:
         w := (if tm > 1, then 1, otherwise 0)
         if dst[a value of nd, b value of nd] + w < dst[nx, ny], then:
            dst[nx, ny] := dst[a value of nd, b value of nd] + w
            if w is same as 0, then:
               insert node containing values ({nx, ny, dst[nx, ny]}) at the beginning of doubleq.
          Otherwise
insert node containing values ({nx, ny, dst[nx, ny]}) at the end of doubleq.
s := c
t := d
(decrease first value of s by 1)
(decrease second value of s by 1)
(decrease first value of t by 1)
(decrease second value of t by 1)
for initialize i := 0, when i < h, update (increase i by 1), do:
grid[i] := initGrid[i]
bfs(first value of s, second value of s)
print(if dst[first value of t, second value of t] is same as infinity, then -1, otherwise dst[first value of t, second value of t])
로그인 후 복사

Example

더 나은 이해를 위해 아래 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
#define N 100
int h, w;
pair<int, int> 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 < h && b >= 0 && b < w;
}
void bfs(int a, int b) {
   for (int i = 0; i < h; i++) {
      for (int j = 0; j < w; j++)
         dst[i][j] = INF;
   }
   dst[a][b] = 0;
   deque<node> 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 <= 2; diffx++) {
         for (int diffy = -2; diffy <= 2; diffy++) {
            int tm = abs(diffx) + abs(diffy);
            int nx = nd.a + diffx, ny = nd.b + diffy;
            if (check(nx, ny) && grid[nx][ny] == &#39;.&#39;) {
               int w = (tm > 1) ? 1 : 0;
               if (dst[nd.a][nd.b] + w < dst[nx][ny]) {
                  dst[nx][ny] = dst[nd.a][nd.b] + w;
                  if (w == 0)
                     doubleq.push_front({nx, ny, dst[nx][ny]});
                  else
                     doubleq.push_back({nx, ny, dst[nx][ny]});
               }
            }
         }
      }
   }
}
void solve(pair<int,int> c, pair<int, int> d, string initGrid[]){
   s = c;
   t = d;
   s.first--, s.second--, t.first--, t.second--;
   for(int i = 0; i < h; i++)
      grid[i] = initGrid[i];
   bfs(s.first, s.second);
   cout << (dst[t.first][t.second] == INF ? -1 :
      dst[t.first][t.second]) << &#39;\n&#39;;
}
int main() {
   h = 4, w = 4;
   pair<int,int> c = {2, 1}, d = {4, 4};
   string initGrid[] = {"#...", ".##.", "...#", "..#."};
   solve(c, d, initGrid);
   return 0;
}
로그인 후 복사

Input

4, 4, {2, 1}, {4, 4}, {"#...", ".##.", "...#", "..#."}
로그인 후 복사

Output

1
로그인 후 복사

위 내용은 로봇이 그리드의 특정 셀에 도달하기 위해 필요한 점프 횟수를 찾는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

2세대 아메카가 왔습니다! 그는 청중과 유창하게 소통할 수 있고, 표정이 더욱 사실적이며, 수십 개 언어를 구사할 수 있다. 2세대 아메카가 왔습니다! 그는 청중과 유창하게 소통할 수 있고, 표정이 더욱 사실적이며, 수십 개 언어를 구사할 수 있다. Mar 04, 2024 am 09:10 AM

휴머노이드 로봇 아메카가 2세대로 업그레이드 되었습니다! 최근 세계이동통신학회(MWC2024)에서 세계 최고 수준의 로봇 아메카(Ameca)가 다시 등장했다. 행사장 주변에는 아메카가 많은 관중을 끌어 모았습니다. GPT-4의 축복으로 Ameca는 다양한 문제에 실시간으로 대응할 수 있습니다. "춤을 추자." 감정이 있느냐는 질문에 아메카는 매우 생생해 보이는 일련의 표정으로 대답했습니다. 불과 며칠 전, Ameca의 뒤를 잇는 영국 로봇 회사인 EngineeredArts는 팀의 최신 개발 결과를 시연했습니다. 영상 속 로봇 아메카는 시각 능력을 갖고 있어 방 전체와 특정 사물을 보고 묘사할 수 있다. 가장 놀라운 점은 그녀도 할 수 있다는 것입니다.

정확한 객체 감지를 위한 다중 그리드 중복 경계 상자 주석 정확한 객체 감지를 위한 다중 그리드 중복 경계 상자 주석 Jun 01, 2024 pm 09:46 PM

1. 서론 현재 주요 객체 검출기는 Deep CNN의 용도 변경된 백본 분류기 네트워크를 기반으로 하는 2단계 또는 단일 단계 네트워크입니다. YOLOv3은 입력 이미지를 수신하고 이를 동일한 크기의 그리드 매트릭스로 나누는 잘 알려진 최첨단 단일 스테이지 검출기 중 하나입니다. 표적 중심이 있는 그리드 셀은 특정 표적을 탐지하는 역할을 담당합니다. 오늘 제가 공유하는 것은 정확한 딱 맞는 경계 상자 예측을 달성하기 위해 각 대상에 여러 그리드를 할당하는 새로운 수학적 방법입니다. 연구원들은 또한 표적 탐지를 위한 효과적인 오프라인 복사-붙여넣기 데이터 향상 기능을 제안했습니다. 새로 제안된 방법은 현재의 일부 최첨단 객체 감지기보다 훨씬 뛰어난 성능을 발휘하며 더 나은 성능을 약속합니다. 2. 배경 타겟 탐지 네트워크는 다음을 사용하도록 설계되었습니다.

AI는 어떻게 로봇을 보다 자율적이고 적응력 있게 만들 수 있습니까? AI는 어떻게 로봇을 보다 자율적이고 적응력 있게 만들 수 있습니까? Jun 03, 2024 pm 07:18 PM

산업자동화 기술 분야에서 최근 무시하기 어려운 두 핫스팟이 있는데 바로 인공지능(AI)과 엔비디아다. 원본 콘텐츠의 의미를 바꾸지 말고, 콘텐츠를 미세 조정하고, 콘텐츠를 다시 작성하고, 계속하지 마세요. “그뿐만 아니라 Nvidia가 원래 그래픽 처리 장치(GPU)에만 국한되지 않기 때문에 둘은 밀접하게 관련되어 있습니다. 엔비디아는 최근 GPU를 확장해 디지털 트윈 분야까지 확장하고 있으며, 최근 떠오르는 AI 기술과도 긴밀하게 연결돼 있다”고 말했다. Schneider Electric, Teradyne Robotics, MiR 및 Universal Robots 회사도 포함됩니다. 최근 엔비디아(Nvidia)는

2개월 만에 휴머노이드 로봇 '워커S' 옷 개기 가능 2개월 만에 휴머노이드 로봇 '워커S' 옷 개기 가능 Apr 03, 2024 am 08:01 AM

기계력 보고서 편집자: 우신(Wu Xin) 국내판 휴머노이드 로봇+대형 모델팀이 옷 접기 등 복잡하고 유연한 재료의 작업 작업을 처음으로 완료했습니다. OpenAI 멀티모달 대형 모델을 접목한 Figure01이 공개되면서 국내 동종업체들의 관련 진전이 주목받고 있다. 바로 어제, 중국의 "1위 휴머노이드 로봇 주식"인 UBTECH는 Baidu Wenxin의 대형 모델과 긴밀하게 통합되어 몇 가지 흥미로운 새로운 기능을 보여주는 휴머노이드 로봇 WalkerS의 첫 번째 데모를 출시했습니다. 이제 Baidu Wenxin의 대형 모델 역량을 활용한 WalkerS의 모습은 이렇습니다. Figure01과 마찬가지로 WalkerS는 움직이지 않고 책상 뒤에 서서 일련의 작업을 완료합니다. 인간의 명령을 따르고 옷을 접을 수 있습니다.

다섯 개의 유연한 손가락과 초인적인 속도를 갖춘 인간 작업을 자율적으로 완료하는 최초의 로봇 등장, 가상 공간 훈련을 지원하는 대형 모델 다섯 개의 유연한 손가락과 초인적인 속도를 갖춘 인간 작업을 자율적으로 완료하는 최초의 로봇 등장, 가상 공간 훈련을 지원하는 대형 모델 Mar 11, 2024 pm 12:10 PM

이번 주, 오픈AI(OpenAI), 마이크로소프트(Microsoft), 베조스(Bezos), 엔비디아(Nvidia)가 투자한 로봇 회사인 FigureAI는 약 7억 달러의 자금 조달을 받았으며 내년 내에 독립적으로 걸을 수 있는 휴머노이드 로봇을 개발할 계획이라고 발표했습니다. 그리고 Tesla의 Optimus Prime은 계속해서 좋은 소식을 받았습니다. 올해가 휴머노이드 로봇이 폭발하는 해가 될 것이라는 데는 누구도 의심하지 않는다. 캐나다에 본사를 둔 로봇 회사인 SanctuaryAI는 최근 새로운 휴머노이드 로봇인 Phoenix를 출시했습니다. 관계자들은 이 로봇이 인간과 같은 속도로 자율적으로 많은 작업을 완료할 수 있다고 주장한다. 인간의 속도로 자동으로 작업을 완료할 수 있는 세계 최초의 로봇인 Pheonix는 각 물체를 부드럽게 잡고 움직이며 우아하게 왼쪽과 오른쪽에 배치할 수 있습니다. 자동으로 물체를 식별할 수 있습니다.

미래를 만들어가는 10대의 휴머노이드 로봇 미래를 만들어가는 10대의 휴머노이드 로봇 Mar 22, 2024 pm 08:51 PM

다음 10가지 휴머노이드 로봇이 우리의 미래를 형성하고 있습니다. 1. ASIMO: Honda가 개발한 ASIMO는 가장 잘 알려진 휴머노이드 로봇 중 하나입니다. 높이 4피트, 무게 119파운드의 ASIMO는 복잡한 환경을 탐색하고 인간과 상호 작용할 수 있는 고급 센서와 인공 지능 기능을 갖추고 있습니다. ASIMO의 다재다능함은 장애인 지원부터 이벤트 프레젠테이션 제공까지 다양한 작업에 적합합니다. 2. 페퍼(Pepper): 소프트뱅크 로보틱스가 만든 페퍼는 인간의 사회적 동반자가 되는 것을 목표로 한다. 표현력이 풍부한 얼굴과 감정을 인식하는 능력을 갖춘 Pepper는 대화에 참여하고, 소매업 환경을 돕고, 교육 지원도 제공할 수 있습니다. 피망

구름고래 Xiaoyao 001 청소 및 걸레질 로봇에는 '뇌'가 있습니다! 경험 | 구름고래 Xiaoyao 001 청소 및 걸레질 로봇에는 '뇌'가 있습니다! 경험 | Apr 26, 2024 pm 04:22 PM

쓸고 닦는 로봇은 최근 소비자들 사이에서 가장 인기 있는 스마트 가전제품 중 하나입니다. 그것이 가져오는 조작의 편리함, 심지어 조작이 필요하지 않은 것만으로도 게으른 사람들이 손을 자유롭게 할 수 있게 되어 소비자는 일상적인 집안일에서 "해방"되고 위장된 형태로 삶의 질이 향상됩니다. 이러한 열풍에 힘입어 시중에 나와 있는 거의 모든 가전제품 브랜드가 자체적으로 청소, 물걸레 로봇을 제작하고 있어 전체 청소, 물걸레 로봇 시장이 매우 활발해지고 있습니다. 그러나 시장의 급속한 확장은 필연적으로 숨겨진 위험을 가져올 것입니다. 많은 제조업체가 더 많은 시장 점유율을 빠르게 점유하기 위해 바다의 전술을 사용할 것이며 결과적으로 업그레이드 포인트 없이 많은 신제품이 나올 것이라고도 합니다. '마트료시카' 모델이라고 해도 과언이 아닙니다. 그러나 모든 청소 및 걸레질 로봇이 그런 것은 아닙니다.

인간형 로봇은 마술을 할 수 있습니다. 봄 축제 갈라 프로그램 팀에서 자세히 알아보세요. 인간형 로봇은 마술을 할 수 있습니다. 봄 축제 갈라 프로그램 팀에서 자세히 알아보세요. Feb 04, 2024 am 09:03 AM

눈 깜짝할 사이에 로봇이 마법을 배웠다고? 먼저 테이블 위의 물숟가락을 집어서 관객들에게 아무것도 없다는 것을 증명하는 모습이 보였고... 그리고 달걀 같은 물체를 손에 쥐고 다시 물숟가락을 테이블 위에 올려 놓았습니다. 그리고 "주문을 걸기" 시작했습니다... ...다시 물숟가락을 집었을 때 기적이 일어났습니다. 원래 넣었던 알은 사라지고, 튀어나온 것은 농구공으로 변해버렸는데... 연속적인 동작을 다시 살펴보자: △ 이 애니메이션은 2배속으로 일련의 동작을 보여주며, 보기만 해도 부드럽게 흘러간다. 0.5배속으로 반복해서 영상을 보면, 마침내 단서를 발견했습니다. 내 손의 속도가 더 빨랐다면 적에게 숨길 수도 있었을 것입니다. 일부 네티즌들은 로봇의 마법 실력이 자신보다 훨씬 높다고 한탄했습니다. 이 마법을 우리를 위해 수행한 사람은 매그였습니다.

See all articles