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

C++で指定された文字列から方向を見つけます


LとRのみを含む文字列があるとします。これは、それぞれ左回転と右回転を示し、ピボットの最終的な方向を見つける必要があります。ここでの方向は、北(N)、東(E)、南(S)、西(W)です。ピボットはコンパスの北(N)に向けられていると想定しています。

したがって、入力が「RRLRLLR」のような場合、出力はEになります。最初の方向はNであるため、RRはSを指し、LRは同じNを再び指し、LLは前の位置Nを指します。 RはEを指します。したがって、Eが最終です。

これを解決するには、次の手順に従います-

  • カウント:=0

  • 方向:=空白の文字列

  • 初期化i:=0の場合、i − sの長さの場合、更新(iを1増やします)、実行-

    • s[i]が'L'と同じ場合、-

      • (カウントを1つ減らします)

    • それ以外の場合

      • (カウントを1つ増やします)

  • カウント>0の場合、-

    • count mod 4が0と同じ場合、-

      • 方向:="N"

    • それ以外の場合、カウントmod 4が1と同じ場合、-

      • 方向:="E"

    • それ以外の場合、カウントmod 4が2と同じ場合、-

      • 方向:="S"

    • それ以外の場合、カウントmod 4が3と同じ場合、-

      • 方向:="W"

  • count <0の場合、-

    • count mod 4が0と同じ場合、-

      • 方向:="N"

    • それ以外の場合、カウントmod 4が-1と同じ場合、-

      • 方向:="W"

    • それ以外の場合、カウントmod 4が-2と同じ場合、-

      • 方向:="S"

    • したがって、カウントmod 4が-3と同じ場合、-

      • 方向:="E"

  • 戻り方向

理解を深めるために、次の実装を見てみましょう-

#include<bits/stdc++.h>
using namespace std;
string get_dir(string s) {
   int count = 0;
   string direction = "";
   for (int i = 0; i < s.length(); i++){
      if (s[0] == '\n')
         return NULL;
      if (s[i] == 'L')
         count--;
      else
         count++;
   }
   if (count > 0){
      if (count % 4 == 0)
         direction = "N";
      else if (count % 4 == 1)
         direction = "E";
      else if (count % 4 == 2)
         direction = "S";
      else if (count % 4 == 3)
         direction = "W";
   }
   if (count < 0){
      if (count % 4 == 0)
         direction = "N";
      else if (count % 4 == -1)
         direction = "W";
      else if (count % 4 == -2)
         direction = "S";
      else if (count % 4 == -3)
         direction = "E";
   }
   return direction;
}
int main() {
   string s = "RRLRLLR";
   cout << (get_dir(s));
}

入力

"RRLRLLR"

出力

E

  1. C ++を使用して、指定されたポイントから可能な四辺形の数を見つけます

    四辺形は、ユークリッド平面幾何学で4つの頂点と4つのエッジを持つポリゴンを形成します。名前4-gonなど。四辺形の他の名前に含まれ、正方形、表示スタイルなどとしても知られています。 この記事では、与えられた点から可能な四辺形の数を見つけるためのアプローチを説明します。この問題では、デカルト平面に提供された4つの点(x、y)を使用して作成できる四辺形の数を調べる必要があります。だからここに与えられた問題の例があります- Input : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) Output : 1 Explanation : One quadr

  2. C++のグリッドで指定された方向に可能な移動をカウントします

    サイズnxmのグリッドと開始点x、yを表す2つの変数nとmです。 また、移動((1,1)、(2,2))などとしてグリッド内を移動するために実行できるステップ/移動のペアも指定されます。移動の各ペアは、x、y軸で実行されるステップの単位を表します。目標は、境界[1、n] X [1、m]内のグリッド内をトラバースするために実行できる合計ステップを見つけることです。nが5、mが4、現在の位置が2、2で、選択されたステップが( 1、-1)次に、このステップを1回実行すると、(3,1)になります。このステップを再度実行すると、(4、-1)になります。これは、-1が範囲外であるため無効です。 例