代码在下面,看了半天没有查出啥问题;
样例没有过,一直都是只停留在起点
个人觉得可以从 24 行的 while 循环那里开始找问题
麻烦大佬调教一下,球球了!
#include<bits/stdc++.h>
using namespace std;
bool vis[1010][1010],mp[1010][1010];
int dx[]={0,1,0,-1},dy[]={1,0,-1,0},ans,n,m,k,x,y,d,v;
char s;
int main()
{
int T;
cin>>T;
while(T--)
{
ans=0;
memset(vis,0,sizeof vis);
cin>>n>>m>>k>>x>>y>>d;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>s;
mp[i][j]=(s=='.'?1:0);
}
}
vis[x][y]=1; //标记起点!!!
while(k--) //k次尝试
{
int xx=x+dx[d],yy=y+dy[d];
if(xx>0&&xx<=n&&yy>0&&yy<=m&&mp[xx][yy]&&vis[xx][yy]) x=xx,y=xx;
else d=(d+1)%4; //换方向试
vis[x][y]=1;
}
for(int i=1;i<=n;i++)
{
cout<<" => ";
for(int j=1;j<=m;j++)
// ans+=vis[i][j]; //total
cout<<vis[i][j]<<' ';
cout<<endl;
}
cout/*<<" ans=>"*/<<ans<<endl;
}
}