andy605 @ 2024-12-08 11:39:42
大佬求调!
#include <bits/stdc++.h>
using namespace std;
bool a[1010][1010],s[1010][1010];
int t;
int cnt;
int x,y;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int m,n,d,k;
int main(){
cin>>t;
while(t--){
memset(a,false,sizeof(a));
memset(s,false,sizeof(s));
cnt=0;
scanf("%d%d%d\n%d%d%d",&m,&n,&k,&x,&y,&d);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
a[i][j]=(getchar()=='.'?true:false);
s[x][y]=true;
cnt++;
while(k--){
int xx=x+dx[d];
int yy=y+dy[d];
if(a[xx][yy]==1){
x=xx;
y=yy;
if(!s[x][y]){
s[x][y]=true;
cnt++;
}
}
else d=(d+1)%4;
}
printf("%d\n",cnt);
}
}
第一次正常输入输出,结果正确 然后第二次在循环的时候,完美跳过了输入...... 求调,悬关QWQ!
by wait_for_load @ 2024-12-08 11:47:14
@andy605 不要用 getchar 会读到其他东西
#include <bits/stdc++.h>
using namespace std;
bool a[1010][1010],s[1010][1010];
int t;
int cnt;
int x,y;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int m,n,d,k;
int main(){
cin>>t;
while(t--){
memset(a,false,sizeof(a));
memset(s,false,sizeof(s));
cnt=0;
scanf("%d%d%d\n%d%d%d",&m,&n,&k,&x,&y,&d);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++){
char ch;
cin>>ch;
a[i][j]=(ch=='.'?true:false);
}
s[x][y]=true;
cnt++;
while(k--){
int xx=x+dx[d];
int yy=y+dy[d];
if(a[xx][yy]==1){
x=xx;
y=yy;
if(!s[x][y]){
s[x][y]=true;
cnt++;
}
}
else d=(d+1)%4;
}
printf("%d\n",cnt);
}
}
by andy605 @ 2024-12-15 10:36:06
@wait_for_load
过了,已关,谢谢!