[普及-]92835题解
2025-12-02 21:23:25
发布于:广东
17阅读
0回复
0点赞
题意过于简单,这里不在累赘。
思路
本题思路十分简单。由于 的范围,我们可以发现使用二维数组一定不行。因此,我们考虑使用map存储该点是否被走过。
#include<bits/stdc++.h>
using namespace std;
#define sn s[i]
#define now {x , y}
int n ,x , y;//当前位置
string s;
map<pair<int , int> , bool> M;//这个点是否移动过
int main(){
M[{0 , 0}] = 1;//记得给初始位置标注上
cin >> n;
cin >> s;
for(int i = 0;i < n;i ++){
if(sn == 'R'){
x ++;
}else if(sn == 'L') x --;
else if(sn =='U') y --;
else if(sn == 'D') y ++;
if(M[now] == 1) {
cout << "Yes";
return 0;//直接结束程序
}
M[now] = 1;
}
cout << "No";//如果前面没有结束程序,那么则说明没有重复,输出no
return 0;
}
注:如果使用非pair的结构体当key,需要重载运算符。重载运算符时不要同时重载()和<。
这里空空如也

有帮助,赞一个