AC代码:
#include<bits/stdc++.h>
using namespace std;
int t;
int main(){
cin>>t;
while(t--){
char mapss[1001][1001]={};
long long n,m,k,dx,dy,d,ans;
cin>>n>>m>>k>>dx>>dy>>d;
bool maps[1001][1001]={};
maps[dx][dy]=true;
ans=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>mapss[i][j];
while(k--){
long long ddx=dx,ddy=dy;
if(d==0) dy++;
if(d==1) dx++;
if(d==2) dy--;
if(d==3) dx--;
if(dx<1||dx>n||dy<1||dy>m||mapss[dx][dy]=='x'){
dx=ddx,dy=ddy;
d=(d+1)%4;
}
else if(!maps[dx][dy]){
ans++;
maps[dx][dy]=true;
}
}
cout<<ans<<endl;
}
return 0;
}
50pts代码:
#include<bits/stdc++.h>
using namespace std;
int t;
int main(){
cin>>t;
while(t--){
char mapss[1001][1001]={};
long long n,m,k,dx,dy,d,ans;
cin>>n>>m>>k>>dx>>dy>>d;
bool maps[1001][1001]={};
ans=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>mapss[i][j];
while(k--){
long long ddx=dx,ddy=dy;
if(d==0) dy++;
if(d==1) dx++;
if(d==2) dy--;
if(d==3) dx--;
if(dx<1||dx>n||dy<1||dy>m||mapss[dx][dy]=='x'){
dx=ddx,dy=ddy;
d=(d+1)%4;
}
else if(!maps[dx][dy]){
ans++;
maps[dx][dy]=true;
}
}
cout<<ans<<endl;
}
return 0;
}
这两段代码之间就差了个
maps[dx][dy]=true;
结果相差50分,为什么?