ロボットがC++で原点に戻る
ロボットがあり、その開始位置が(0、0)であるとします。一連の動きがある場合は、動きが完了した後、このロボットが(0、0)で終了するかどうかを確認する必要があります。
移動シーケンスは文字列として指定され、文字moves[i]はそのi番目の移動を表します。記号は、右を表すR、左を表すL、上を表すU、下を表すDです。ロボットがすべての移動を終了した後に原点に戻る場合は、trueを返します。それ以外の場合は、falseを返します。
したがって、入力が「RRULLD」の場合、出力はtrueになります。右は2ユニット、次に上に、左は2ユニット、次に下になります。これが開始位置です。
これを解決するには、次の手順に従います-
-
l:=移動配列のサイズ
-
lが0と同じ場合、-
-
trueを返す
-
-
lft:=0、up:=0
-
初期化i:=0の場合、i
-
move[i]が'L'と同じ場合、-
-
(lftを1増やします)
-
-
move[i]が'R'と同じ場合、-
-
(lftを1減らします)
-
-
move[i]が'U'と同じ場合、-
-
(1ずつ増やします)
-
-
moves[i]が'D'と同じ場合、-
-
(1つ減らす)
-
-
-
lftが0と同じで、upが0と同じ場合、-
-
trueを返す
-
-
falseを返す
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; class Solution { public: bool judgeCircle(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] == 'L') { lft++; } if (moves[i] == 'R') { lft--; } if (moves[i] == 'U') { up++; } if (moves[i] == 'D') { up--; } } if (lft == 0 && up == 0) { return true; } return false; } }; main(){ Solution ob; cout << (ob.judgeCircle("RRULLD")); }
入力
"RRULLD"
出力
1
-
C++のvoid関数から戻る
void関数は、何も返さないため、voidと呼ばれます。 「void関数は何も返すことができません」このステートメントは常に真であるとは限りません。 void関数からは値を返すことはできませんが、値以外のものを返すことはできます。それらのいくつかは以下のようなものです。 void関数は戻ることができます void関数は値を返すことはできません。ただし、returnステートメントを使用することはできます。機能が終了したことを示します。コードの可読性が向上します。 サンプルコード #include <iostream> using namespace std; void my_fu
-
C ++で「オブジェクトを返す」方法は?
オブジェクトはクラスのインスタンスです。メモリは、オブジェクトが作成されたときにのみ割り当てられ、クラスが定義されたときは割り当てられません。 returnキーワードを使用して、関数からオブジェクトを返すことができます。これを実証するプログラムは次のとおりです- 例 #include <iostream> using namespace std; class Point { private: int x; int y; public: Point(in