xx04 @ 2024-12-22 11:23:05
大概知道问题点在哪儿,就是题目中的第二个样例感觉走的很奇怪,代码测试出来从4,2开始就飞了,走到别的方向了,
for(int i=1;i<=t;i++){
int n,m,k;
int x,y,d;
cin>>n>>m>>k>>x>>y>>d;
int c=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
while(k>0){
if(d==0){
k--;
if(k<0){
break;
}
if(x>=1&&x<=n&&y>=1&&y+1<=m&&a[x][y+1]=='.'){
c++;
y++;
a[x][y]='x';
}
else{
d=(d+1)%4;
}
}
if(d==1){
k--;
if(k<0){
break;
}
if(x>=1&&x+1<=n&&y>=1&&y<=m&&a[x+1][y]=='.'){
c++;
x++;
a[x][y]='x';
}
else{
d=(d+1)%4;
}
}
if(d==2){
k--;
if(k<0){
break;
}
if(x>=1&&x<=n&&y-1>=1&&y<=m&&a[x][y-1]=='.'){
c++;
y--;
a[x][y]='x';
}
else{
d=(d+1)%4;
}
}
if(d==3){
k--;
if(k<0){
break;
}
if(x-1>=1&&x<=n&&y>=1&&y<=m&&a[x-1][y]=='.'){
c++;
x--;
a[x][y]='x';
}
else{
d=(d+1)%4;
}
}
}
cout<<c<<endl;
}
by cc_tcpt @ 2025-01-08 17:14:07
我没有调试,但是我看着的错误,是题目没有说走过之后就不能走,你程序到了一个能到的点后,就给他标记起来了。如果回答有错非常抱歉