View Code of Problem 2597

/*改了无数次bug,真是被自己蠢到了*/
/*
6 5
..S..
.#.#.
.#.#.
.#.#.
.#.#.
.E...

*/
#include<stdio.h>
#include<string.h>

typedef struct 
	{
	int x1;
	int y1;
	char data;
	int num;
	}jiegou;

int main()
{
	int n,m;
	

	while(scanf("%d%d",&n,&m)!=EOF)
	{
		char a[100][100];
		int i,j;
		int x,y;
		int flag=0,flag2;
		jiegou wtf[1000];
		int wtfs=0;
		int wtfe=0;
		int ans=0;
		int biaoji[100][100];
		memset(biaoji,0,sizeof(biaoji));
		memset(a,0,sizeof(a));

		getchar();
		for(i=0;i<n;i++)
				scanf("%s",&a[i]);

		for(x=0;x<n;x++)
		{
			
			for(y=0;y<m;y++)
			{
			if(a[x][y]=='S')
			{
				flag=1;
				break;
			}
			}

			if(flag==1)
				break;
		}

		wtf[0].x1=x;
		wtf[0].y1 =y;
		wtf[0].data =a[x][y];
		wtf[0].num =0;
		biaoji[x][y]=1;
		/*
5 5
S....
.....
.....
.....
....E
  */
		for(i=0;i<1002;i++)
		{
			
		ans=wtf[i].num ;
		if(wtf[i].data =='E')
			break;
		

		if(wtf[i].x1 +1<n&&wtf[i].y1 <m&&!biaoji[wtf[i].x1 +1][wtf[i].y1]&&a[wtf[i].x1 +1][wtf[i].y1 ]!='#')
		{
			flag2=wtfs+1;
			wtf[flag2].data  =a[wtf[i].x1 +1][wtf[i].y1];
		wtf[flag2].x1 =wtf[i].x1 +1;
		wtf[flag2].y1 =wtf[i].y1;
		wtf[flag2].num=wtf[i].num +1;
		biaoji[wtf[i].x1 +1][wtf[i].y1]++;
		wtfs++;
		}
		if(wtf[i].x1 -1>=0&&wtf[i].y1 <m&&!biaoji[wtf[i].x1 -1][wtf[i].y1]&&a[wtf[i].x1 -1][wtf[i].y1 ]!='#')
		{
			flag2=wtfs+1;
			wtf[flag2].data  =a[wtf[i].x1 -1][wtf[i].y1];
		wtf[flag2].x1 =wtf[i].x1 -1;
		wtf[flag2].y1 =wtf[i].y1;
			wtf[flag2].num=wtf[i].num +1;
		biaoji[wtf[i].x1 -1][wtf[i].y1]++;
			wtfs++;
		
		}
		if(wtf[i].x1<n&&wtf[i].y1-1 >=0&&!biaoji[wtf[i].x1][wtf[i].y1-1]&&a[wtf[i].x1 ][wtf[i].y1-1 ]!='#')
		{
			flag2=wtfs+1;
			wtf[flag2].data  =a[wtf[i].x1][wtf[i].y1-1];
		wtf[flag2].x1 =wtf[i].x1;
		wtf[flag2].y1 =wtf[i].y1-1;
			wtf[flag2].num=wtf[i].num +1;
		biaoji[wtf[i].x1][wtf[i].y1-1]++;
			wtfs++;
		
		}
		if(wtf[i].x1<n&&wtf[i].y1+1 <m&&!biaoji[wtf[i].x1][wtf[i].y1+1]&&a[wtf[i].x1 ][wtf[i].y1+1]!='#')
		{
			flag2=wtfs+1;
			wtf[flag2].data  =a[wtf[i].x1][wtf[i].y1+1];
		wtf[flag2].x1 =wtf[i].x1;
		wtf[flag2].y1 =wtf[i].y1+1;
			wtf[flag2].num=wtf[i].num +1;
		biaoji[wtf[i].x1][wtf[i].y1+1]++;
			wtfs++;
		
		}
	
		
		
		}



		printf("%d\n",ans);



	}
	return 0;

}

Double click to view unformatted code.


Back to problem 2597