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

C ++で指定された方向に移動した後、開始位置に戻ることができるかどうかを確認します


位置(0、0)にいると仮定します。4文字を使用して連続する方向を表す文字列があります。与えられたすべての方向を考慮した後、(0、0)の位置に戻ることができるかどうかを確認する必要があります。シンボルは

  • 東のE
  • 西は西
  • 北は北
  • 南は南。

したがって、入力が「EENWWS」のような場合、出力はtrueになり、東に2単位移動してから北に移動し、次に西に2単位移動してから再び南に移動するため、これが開始位置になります。

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

  • l:=移動配列のサイズ
  • lが0と同じ場合、-
    • trueを返す
  • lft:=0、up:=0
  • iを初期化する場合:=0、i
  • moves[i]が'W'と同じ場合、-
    • (lftを1増やします)
  • moves[i]が'E'と同じ場合、-
    • (lftを1減らします)
  • moves[i]が'N'と同じ場合、-
    • (1ずつ増やします)
  • moves[i]が'S'と同じ場合、次のようになります。
    • (1つ減らす)
  • lftが0と同じで、upが0と同じ場合、-
    • trueを返す
  • falseを返す
  • 例(C ++)

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

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
       public:
       bool solve(string moves) {
          int l = moves.length();
             if (l == 0) {
                return true;
             }
             int lft = 0, up = 0;
             for (int i = 0; i < l; i++) {
                if (moves[i] == 'W') {
                   lft++;
                }
                if (moves[i] == 'E') {
                   lft--;
                }
                if (moves[i] == 'N') {
                   up++;
                }
                if (moves[i] == 'S') {
                   up--;
                }
             }
             if (lft == 0 && up == 0) {
                return true;
             }
             return false;
          }
       };
    }
    main(){
       Solution ob;
       cout << (ob.solve("EENWWS"));
    }

    入力

    "EENWWS"

    出力

    1

    1. 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が範囲外であるため無効です。 例

    2. C++で指定されたサイズの長方形内で可能な菱形の数を数えます

      高さX幅の寸法の長方形が与えられます。長方形は、点(0,0)を左下隅に持つ2D座標系で表されます。したがって、目標は、これらすべての条件が満たされるように、この長方形内で可能な菱形の数を数えることです- ひし形の面積は0を超えています。 ひし形の対角線はx軸とy軸に平行です。 ひし形には、すべてのコーナーの整数座標があります。 例を挙げて理解しましょう 入力 −長さ=3幅=3 出力 −指定されたサイズの長方形内で可能な菱形の数は次のとおりです。4 説明 −下の図には、height =width=3の長方形があります。また、面積が0を超え、対角線が両方の軸に平行(