C++のマトリックス内の最終的なセル位置
文字列として一連のコマンドがあるとすると、文字列には4つの方向に対して4つの異なる文字が含まれます。 Uは上、Dは下、Lは左、Rは右です。初期のセル位置(x、y)もあります。与えられたコマンドに従った後、マトリックス内のオブジェクトの最終的なセル位置を見つけます。最終的なセル位置がマトリックスに存在すると仮定します。コマンド文字列が「DDLRULL」のようで、初期位置が(3、4)であるとします。最終的な位置は(1、5)です。
アプローチは簡単で、上下左右の動きの数を数え、式-
を使用して最終的な位置(x’、y’)を見つけます。(x’, y’) = (x + count_right – count_left,y + (count_down – count_up))
例
#include<iostream> using namespace std; void getFinalPoint(string command, int x, int y) { int n = command.length(); int count_up, count_down, count_left, count_right; int x_final, y_final; count_up = count_down = count_left = count_right = 0; for (int i = 0; i < n; i++) { if (command[i] == 'U') count_up++; else if (command[i] == 'D') count_down++; else if (command[i] == 'L') count_left++; else if (command[i] == 'R') count_right++; } x_final = x + (count_right - count_left); y_final = y + (count_down - count_up); cout << "Final Position: " << "(" << x_final << ", " << y_final << ")"; } int main() { string command = "DDLRULL"; int x = 3, y = 4; getFinalPoint(command, x, y); }
出力
Final Position: (1, 5)
-
C++のMazeII
空のスペースと壁のある迷路の中にボールがあるとします。これで、ボールは上、下、左、右などの任意の方向に転がることで空のパスを通過できますが、壁にぶつかるまで転がりが止まりません。ボールが止まると、次の方向を選択できます。 ボールの位置、目的地、迷路を開始する必要があります。ボールが目的地に停止するための最短距離を見つける必要があります。ここで、距離は実際にはボールで覆われている空のセルの数によって定義されます(開始位置を除く、開始位置を含む)。それが目的地でボールを止めることが不可能な場合は、-1を返します。 迷路は1つの2D配列で表されます。ここで、1は壁を示し、0は空きスペースを示しま
-
C++の迷路
空のスペースと壁のある迷路の中にボールがあるとします。これで、ボールは上、下、左、右などの任意の方向に転がることで空のパスを通過できますが、壁にぶつかるまで転がりが止まりません。ボールが止まると、次の方向を選択できます。 ボールの位置、目的地、迷路を開始し、ボールが目的地に止まるかどうかを確認する必要があります。迷路は1つの2D配列で表されます。ここで、1は壁を示し、0は空きスペースを示します。迷路の境界はすべて壁です。開始座標と宛先座標は、行と列のインデックスで表されます。 したがって、入力が2D配列で表される迷路のようなものである場合 0 0 1 0 0