错误已知道,但不知道咋改
#include<bits/stdc++.h>
using namespace std;
struct node{int x,y;};
char mapp[310][310];
int n,k,step=0;
int ans[310][310],rans=1e9;
node role,last;
int vis[310][310];
int wx[10]={0,0,1,0,-1};
int wy[10]={0,1,0,-1,0};
bool check(int x,int y)
{
if(x<=0||y<=0||y>n||x>n)return false;
if(vis[x][y])return false;
if(step==0)
for(int i=x-2;i<=x+2;i++)for(int j=y-2;j<=y+2;j++)if(mapp[i][j]=='*')return false;
if(step==1)
for(int i=x-1;i<=x+1;i++)for(int j=y-1;j<=y+1;j++)if(mapp[i][j]=='*')return false;
if(step==2)
for(int i=x;i<=x;i++)for(int j=y;j<=y;j++)if(mapp[i][j]=='*')return false;
return true;
}
void bfs()
{
queue<node> Q;
Q.push(role);
vis[role.x][role.y]=1;
while(!Q.empty())
{
int ux=Q.front().x,uy=Q.front().y;
Q.pop();
for(int i=1;i<=4;i++)
{
ux+=wx[i],uy+=wy[i];
if(check(ux,uy))
{
ans[ux][uy]=ans[ux-wx[i]][uy-wy[i]]+1;
vis[ux][uy]=1,Q.push(node{ux,uy});
}
ux-=wx[i],uy-=wy[i];
}
}
}
void init()
{
cin>>n>>k;
role.x=role.y=3;
last.x=last.y=n-2;
memset(mapp,'*',sizeof(mapp));
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>mapp[i][j];
ans[3][3]=1;
}
signed main()
{
init();
for(step=0;step<=2;step++)
{
memset(vis,0,sizeof(vis));
bfs();
if(ans[n-2][n-2]!=0)rans=min(rans,ans[n-2][n-2]-1);
for(int i=1;i<=n;i++,cout<<endl)
for(int j=1;j<=n;j++)
printf("%3d ",ans[i][j]);
cout<<step<<endl;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(ans[i][j]!=0)ans[i][j]+=k;//感觉这里改一下就好了 想不好咋改
}
cout<<int(rans)<<endl;
return 0;
}
求助大佬。