解题思路: 注意越界判断以及方向符号改变
注意事项:
参考代码:
#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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复