首页 > 代码库 > 仙岛求药(一)(C++)
仙岛求药(一)(C++)
#include<iostream>
#include<cstring>
using namespace std;
char map[101][101];
int a[101][101],ans=0,m,n;
void res(int u,int v,int i,int j)
{
int t=a[u][v];
if(u==i&&v==j) ans=t;
t++;
if(v<m-1&&map[u][v+1]!=‘#‘&&a[u][v+1]>t)
{
a[u][v+1]=t;
res(u,v+1,i,j);
}
if(u>0&&map[u-1][v]!=‘#‘&&a[u-1][v]>t)
{
a[u-1][v]=t;
res(u-1,v,i,j);
}
if(v>0&&map[u][v-1]!=‘#‘&&a[u][v-1]>t)
{
a[u][v-1]=t;
res(u,v-1,i,j);
}
if(u<n-1&&map[u+1][v]!=‘#‘&&a[u+1][v]>t)
{
a[u+1][v]=t;
res(u+1,v,i,j);
}
}
int main()
{
int startx,starty,endx,endy;
while(cin>>n>>m&&m!=0&&n!=0)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>map[i][j];
if(map[i][j]==‘@‘)
{
startx=i;
starty=j;
}
if(map[i][j]==‘*‘)
{
endx=i;
endy=j;
}
}
}
memset(a,1,sizeof(a));
a[startx][starty]=0;
res(startx,starty,endx,endy);
if(ans!=0) cout<<ans<<endl;
else cout<<-1<<endl;
ans=0;
}
}
仙岛求药(一)(C++)