题目地址
我的代码:
#include <bits/stdc++.h>
using namespace std;
int lx,ly,rx,ry;
int a[120][120];
int b[120][120];
int m=1000000;
int n;
void dfs(int x,int y,int sum)
{
if(a[x][y]==4)
{
if(sum<m)
m=sum;
return;
}
int dx[4]={0,-1,0,1},dy[4]={-2,0,2,0};
for(int i=0;i<4;i++)
{
int nx=dx[i]+x,ny=dy[i]+y;
if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&a[nx][ny]!=a[x][y]&&b[nx][ny]==0)
{
b[nx][ny]=1; //占位
dfs(nx,ny,sum+1);
b[nx][ny]=0;
}
}
}
int main()
{
cin>>n;
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
char c;
cin>>c;
if(c=='+')
a[i][j]=1;
else if(c=='-')
a[i][j]=2;
else if(c=='A')
{
int lx=i,ly=j;
a[i][j]=3;
}
else if(c=='B')
{
int rx=i,ry=j;
a[i][j]=4;
}
}
}
dfs(lx,ly,0);
cout<<m;
return 0;
}