求调代码
查看原帖
求调代码
571589
_Virgo_楼主2022/11/28 16:46

错误已知道,但不知道咋改

#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;
} 

求助大佬。

2022/11/28 16:46
加载中...