3 3X#Y***#*#3 3X#Y*#*#*#Example Output
4-1#include<stdio.h>#include<string.h>#include<stdlib.h>#define maxn 20typedef struct node{ int x; int y;}queue;char df[maxn][maxn];int book[maxn][maxn];queue q[404];int num[maxn][maxn];int n,m,a,b,flag;int front,rear;int bfs(int x,int y){ int i,tx,ty,k; int xx,yy; int next[4][2]={{-1,0},{0,1},{1,0},{0,-1}}; book[x][y]=1; rear++; q[rear].x=x; q[rear].y=y; num[x][y]=0; while(front!=rear) { front++; xx=q[front].x; yy=q[front].y; if(df[xx][yy]=='Y') { return num[xx][yy]; } for(i=0;i<4;i++) { tx=xx+next[i][0]; ty=yy+next[i][1]; if(tx<0||tx>=n||ty<0||ty>=m) continue; if(df[tx][ty]!='#'&&book[tx][ty]==0) { book[tx][ty]=1; rear++; q[rear].x=tx; q[rear].y=ty; num[tx][ty]=num[xx][yy]+1; } } } return -1;}int main(){ int i,j,u,v; while(scanf("%d%d",&n,&m)!=EOF) { flag=front=rear=0; memset(book,0,sizeof(book)); memset(num,0,sizeof(num)); for(i=0;i<n;i++) { scanf("%s",df[i]); } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(df[i][j]=='X') { u=i; v=j; break; } } if(j!=m) break; } flag=bfs(u,v); printf("%d/n",flag); } return 0;}
新闻热点
疑难解答