2142748_ac_0ms_52k.c

来自「北大大牛代码 1240道题的原代码 超级权威」· C语言 代码 · 共 50 行

C
50
字号
# include <stdio.h>
# include <string.h>

int s, r, c, st;
int mark[11][11];
char map[11][11];

void go(int i, int j)
{
	if(i==-1||i==r||j==c||j==-1)
	{
		printf("%d step(s) to exit\n",s-1);
		return ;
	}
	if(!mark[i][j])
		mark[i][j] = s++;
	else
	{
		printf("%d step(s) before a loop of %d step(s)\n",mark[i][j]-1,s-mark[i][j]);
		return ;
	}
	if(map[i][j]=='W')
		go(i,j-1);
	if(map[i][j]=='E')
		go(i,j+1);
	if(map[i][j]=='S')
		go(i+1,j);
	if(map[i][j]=='N')
		go(i-1,j);
}

void input()
{
	int i;
	
	while(scanf("%d%d%d",&r,&c,&st)==3&&r&&c&&st)
	{
		memset(mark,0,sizeof(mark));
		for(i = 0; i < r; i++)
			scanf("%s",map[i]);
		s = 1;
		go(0,st-1);
	}
}

int main()
{
	input();
	return 1;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?