做一名聪明的CS玩家
Sample Input
5 5 ***XX *@XXX **XX# ***X* *****
Sample Output
8
#include<stdio.h>
int a[4][2]={-1,0,0,-1,0,1,1,0};
int b[100][100]={0},m,n,min=0;
char s[100][100];
void sort(int x,int y,int sum)
{
int i;
if(s[x][y]=='#'||sum>=min)
{
if(min>sum)min=sum;
return;
}
for(i=0;i<4;i++)
if(x+a[i][0]>=0&&y+a[i][1]>=0&&x+a[i][0]<m&&y+a[i][1]<n)
if(!b[x+a[i][0]][y+a[i][1]]&&s[x+a[i][0]][y+a[i][1]]!='X')
{
b[x+a[i][0]][y+a[i][1]]=1;
sort(x+a[i][0],y+a[i][1],sum+1);
b[x+a[i][0]][y+a[i][1]]=0;
}
}
void main()
{
int i,j,x=-1,y;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
{
scanf("%s",s[i]);
for(j=0;j<n&&x==-1;j++)
if(s[i][j]=='@')x=i,y=j,b[i][j]=1;
}
min=m*n,sort(x,y,0);
if(min==m*n)printf("GAME OVER\n");
else printf("%d\n",min);
}