ในปัญหานี้ เราได้รับหุ่นยนต์ที่เคลื่อนที่ได้ทั้งสี่ทิศทางแต่เคลื่อนที่เพียงครั้งเดียว ทิศทางขึ้น('U'), ลง('D'), ซ้าย('L'), ขวา('R') และเราได้รับสตริงที่มีชื่อย่อของทิศทางของตัวเลข งานของเราคือพิมพ์ตำแหน่งสุดท้ายของหุ่นยนต์ โดยให้ตำแหน่งเริ่มต้นของหุ่นยนต์คือ (0,0)
มาดูตัวอย่างทำความเข้าใจปัญหากัน
ป้อนข้อมูล − อินพุต:'LDRRUL'
ผลลัพธ์ − (0, 0)
คำอธิบาย −
L (left) : (0,0) -> (-1,0) D (down) : (-1,0) -> (-1, -1) R (right) : (-1, -1) -> (0, -1) R (right) : (0, -1) -> (1, -1) U(up) : (1, -1) -> (1, 0) L(left) : (1, 0) -> (0, 0)
เพื่อแก้ปัญหานี้ เราจะนับการเคลื่อนที่ทั้งหมดในแกน x และทิศทางแกน y สำหรับพิกัด x ให้เพิ่มจำนวนสำหรับการเคลื่อนที่ไปทางขวา และลดจำนวนการเคลื่อนไปทางซ้าย สำหรับพิกัด y เพิ่มจำนวนสำหรับการเลื่อนขึ้นและลงสำหรับการเลื่อนด้านซ้าย
ตัวอย่าง
โปรแกรมแสดงการใช้งานโซลูชันของเรา
#include <iostream> #include <string.h> using namespace std; void robotMoved(string move) { int xAxis, yAxis; int l=move.size(); for (int i = 0; i < l; i++) { if (move[i]=='U') yAxis++; else if (move[i]=='D') yAxis--; else if (move[i]=='L') xAxis--; else if (move[i]=='R') xAxis++; } cout<<"Final Position of the robot is : ("<<xAxis<<", "<<yAxis<<")"<<endl; } int main() { string move="URLLDDRRUDUDDRU"; robotMoved(move); return 0; }
ผลลัพธ์
Final Position of the robot is : (32744, -274873553)