解题思路: 注意越界判断以及方向符号改变
注意事项:
参考代码:
#include<iostream>
using namespace std;
const int inf = 1e3;
int M,N;
int a,b,d,p;
char c;
char toward[4] = {'U','R','D','L'};
int arr[inf][inf];
void Init(){
cin>>M>>N;
for(int i=0;i<M;i++){
for(int j=0;j<N;j++){
cin>>arr[i][j];
}
}
cin>>a>>b>>c>>d;
for(int i=0;i<4;i++){
if(toward[i]==c){
p = i;
break;
}
}
}
void compute(){
while(d>0){
if(arr[a][b]==0){
arr[a][b]=1;
if(toward[p]=='L' && (M-1)!=a) a++;
if(toward[p]=='U' && b!=0) b--;
if(toward[p]=='R' && a!=0) a--;
if(toward[p]=='D' && (N-1)!=b) b++;
if(p==0){
p=4;
}
p = (p-1)%4;
}else{
arr[a][b]=0;
if(toward[p]=='L' && a!=0) a--;
if(toward[p]=='U' && (N-1)!=b) b++;
if(toward[p]=='R' && (M-1)!=a) a++;
if(toward[p]=='D' && b!=0) b--;
p = (p+1)%4;
}
d--;
}
cout<<a<<" "<<b<<endl;
}
int main(){
Init();
compute();
return 0;
}
0.0分
1 人评分