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つ減らす)
- moves[i]が'W'と同じ場合、-
- trueを返す
例(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
-
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が範囲外であるため無効です。 例
-
C++で指定されたサイズの長方形内で可能な菱形の数を数えます
高さX幅の寸法の長方形が与えられます。長方形は、点(0,0)を左下隅に持つ2D座標系で表されます。したがって、目標は、これらすべての条件が満たされるように、この長方形内で可能な菱形の数を数えることです- ひし形の面積は0を超えています。 ひし形の対角線はx軸とy軸に平行です。 ひし形には、すべてのコーナーの整数座標があります。 例を挙げて理解しましょう 入力 −長さ=3幅=3 出力 −指定されたサイズの長方形内で可能な菱形の数は次のとおりです。4 説明 −下の図には、height =width=3の長方形があります。また、面積が0を超え、対角線が両方の軸に平行(