一道广搜的题目 《最少步数》
  • 板块学术版
  • 楼主魏老师
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/4/7 17:03
  • 上次更新2024/4/7 19:39:32
查看原帖
一道广搜的题目 《最少步数》
285961
魏老师楼主2024/4/7 17:03

不明白,为什么提交正确,而样例不过。

//最少步数 胡乘铭 
#include<bits/stdc++.h>
using namespace std;
const int N=110;
const int flag[12][2]={{-2,-2},{-2,-1},{-2,1},{-2,2},{-1,2},{1,2},{2,2},{2,1},{2,-1},{2,-2},{1,-2},{-1,-2}};
int q[N*N][2],c[N]; 
int n1,m1,n2,m2;
bool p[N][N];
void bfs(int x,int y)
{
	int head=0,tail=1;p[x][y]=true;
	q[1][0]=x,q[1][1]=y;
	while(head<tail)
	{
		++head;
		x=q[head][0];y=q[head][1];
		for(int i=0;i<=11;i++)
		{ 
			int x1=x+flag[i][0];int y1=y+flag[i][1];
			if(x1>=1&&x1<=100&&y1>=1&&y1<=100&&!p[x1][y1])
			{
			   p[x1][y1]=true;
			   q[++tail][0]=x1;q[tail][1]=y1;
			   c[tail]=c[head]+1;
			   if(x1==1&&y1==1)  
			   {
			   		cout<<c[tail]<<endl;return;
			   }
			}
		}
	}
}
int main()
{
	cin>>n1>>m1>>n2>>m2;
	bfs(n1,m1);
	memset(p,0,sizeof(p));
	bfs(n2,m2);
	return 0;
}

2024/4/7 17:03
加载中...