C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で与えられた動きの後のロボットの位置


この問題では、4方向すべてに移動するが、1回だけ移動するロボットが与えられます。方向は上(「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)

  1. ロボットが最終位置に到達するまでのステップをカウントするC++コード

    2つの座標(x1、y1)と(x2、y2)があるとします。ロボットがポイント(x1、y1)にいて、ポイント(x2、y2)に移動しようとしています。 1つのステップで、ロボットは1つのセルに向かって8つの隣接する座標に移動できます。最終的な位置に到達するために必要な最小限のステップ数を見つける必要があります。 したがって、入力がx1=3のような場合。 y1 =4; x2 =6; y2 =1;の場合、出力は3になります。 ステップ これを解決するには、次の手順に従います- return maximum of |x2 - x1| and |y2 - y1| 例 理解を深めるために、次の実装

  2. C++でのT秒後のカエルの位置

    n個の頂点で構成される無向ツリーが1つあるとします。頂点には1からnまでの番号が付けられています。これで、カエルは頂点1からジャンプを開始します。カエルは、現在の頂点から、訪問していない別の頂点に隣接している場合、1秒でジャンプできます。カエルは、訪れた頂点に戻ることはできません。カエルが複数の頂点にジャンプできる場合は、そのうちの1つにランダムにジャンプします 確率が同じ場合、それ以外の場合、カエルが訪問していない頂点にジャンプできない場合、同じ頂点で永久にジャンプします。 ツリーはエッジの配列として与えられます。 t秒後にカエルが頂点ターゲットにいる確率を見つける必要があります。 し