寻找小马 题解
2026-02-26 09:12:02
发布于:广东
10阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
char f[2005][2005],g;
int n,m,a,b,c,d,q,x,y,z,h;
void mian(char di,int k){
if(di == 'L'){
//(x,y-k)
for(int i = 1;i <= k;i++){
if(y-1 < 0 || f[x][y-1] == '#'){
break;
}
else{
y--;
}
if(x == c && y == d){
z = 1;
cout << "YES";
return;
}
}
}
else if(di == 'R'){
//(x,y+k)
for(int i = 1;i <= k;i++){
if(y+1 >= m || f[x][y+1] == '#'){
break;
}
else{
y++;
}
if(x == c && y == d){
z = 1;
cout << "YES";
return;
}
}
}
else if(di == 'U'){
//(x-k,y)
for(int i = 1;i <= k;i++){
if(x-1 < 0 || f[x-1][y] == '#'){
break;
}
else{
x--;
}
if(x == c && y == d){
z = 1;
cout << "YES";
return;
}
}
}
else if(di == 'D'){
//(x+k,y)
for(int i = 1;i <= k;i++){
if(x+1 >= n || f[x+1][y] == '#'){
break;
}
else{
x++;
}
if(x == c && y == d){
z = 1;
cout << "YES";
return;
}
}
}
}
int main(){
cin >> n >> m;
for(int i = 0;i < n;i++){
string s;
cin >> s;
for(int k = 0;k < m;k++){
f[i][k] = s[k];
}
}
cin >> a >> b >> c >> d;
x = a;
y = b;
if(x == c && y == d){
z = 1;
cout << "YES";
return 0;
}
cin >> q;
for(int i = 1;i <= q;i++){
cin >> g >> h;
mian(g,h);
if(z == 1){
return 0;
}
}
cout << "NO";
return 0;
}
这里空空如也





有帮助,赞一个