アクセスの長さ
中に入ると
これは,座標平面(5,5)上でゲームキャラクタの移動の長さを測定する問題である.ただし、(5,5)を超えてはいけません.同じ道を繰り返していくと、移動の長さに追加されません.
コードの説明
最初はベクトル2次元思考座標で解く.しかし、2番目の例題はいつも解けない.そこで調べてみると、2次元座標解ではなく、移動する道を4次元で表すことに気づきました.
まず地図で4次元配列を作ります.次のxとyに5を入れ、dirsの長さで繰り返し文を回転します.各条件文を書くときは、文字に合った内容を書けばいいです.+の場合、xまたはyは10未満(移動距離は10を超えてはいけません)-の場合、xまたはyは0を超えなければなりません(移動距離は0を下回ってはいけません).
歩く距離が訪問されていなければ(1でなければ)、両側に1番を描けばいいです.4次元なので両方に気をつけて.次に、文字に基づいてxまたはyに1を加えたり減らしたりすればよい.
コード#コード#
#include <string>
using namespace std;
int solution(string dirs) {
int answer = 0;
int map[11][11][11][11];
int x = 5;
int y = 5;
for(int i=0; i<dirs.length(); i++){
if(dirs[i] == 'U'){
if(y < 10){
if(map[x][y][x][y+1] != 1){
map[x][y][x][y+1] = 1;
map[x][y+1][x][y] = 1;
answer++;
}
y++;
}
}else if(dirs[i] == 'D'){
if(y > 0 ){
if(map[x][y][x][y-1] != 1){
map[x][y][x][y-1] = 1;
map[x][y-1][x][y] = 1;
answer++;
}
y--;
}
}
else if(dirs[i] == 'R'){
if(x < 10){
if(map[x][y][x+1][y] != 1){
map[x][y][x+1][y] = 1;
map[x+1][y][x][y] = 1;
answer++;
}
x++;
}
}else if(dirs[i] == 'L'){
if(x > 0){
if(map[x][y][x-1][y] != 1){
map[x][y][x-1][y] = 1;
map[x-1][y][x][y] = 1;
answer++;
}
x--;
}
}
}
return answer;
}
リファレンス
https://greenapple16.tistory.com/70
Reference
この問題について(アクセスの長さ), 我々は、より多くの情報をここで見つけました https://velog.io/@jy1999/방문길이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol