dfs求调
查看原帖
dfs求调
873417
Istruggle楼主2023/7/16 09:18

想用dfs 做一下这一题,但严重超时,哪里出了问题?

#include<bits/stdc++.h>
using namespace std;
string a,b;
int ans=1000000,ax,ay,bx,by;
int ne[8][2]={{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,1}};
int vis[25][25]={0};
void dfs(int x,int y,int n)
{
  if(x==bx&&y==by)
  {
  	ans=min(ans,n);
  	cout<<ans<<endl;
  	return;
  }
  for(int i =0;i<8;i++)
  {
  	int nx=x+ne[i][0];
  	int ny=y+ne[i][1];
  	if(nx>=1&&nx<=8&&ny>=1&&ny<=8&&vis[nx][ny]!=1)
  	{
  		vis[nx][ny]=1;
  		dfs(nx,ny,n+1);
  		vis[nx][ny]=0; 
  	}
  	
  }
}
int main()
{
  while(cin>>a>>b) 
  {
  	memset(vis,0,sizeof(vis));
  	ans=1000000;
  	ax=a[0]-'a'+1;
  	ay=a[1]-'0';
  	bx=b[0]-'a'+1;
  	by=b[1]-'0';
      dfs(ax,ay,0);
      cout<<ans;
  }
  return 0;
}
2023/7/16 09:18
加载中...