2052873_wa.c

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

C
73
字号
# include <stdio.h>

int W, H;
int ans;
char map[21][21];
int mark[21][21];

void search(int a, int b)
{
	if(a+1<H&&map[a+1][b]=='.'&&mark[a+1][b]==0)
	{
		ans++;
		mark[a+1][b] = 1;
		search(a+1,b);
	}
	if(a>0&&map[a-1][b]=='.'&&mark[a-1][b]==0)
	{
		ans++;
		mark[a-1][b] = 1;
		search(a-1,b);
	}
	if(b+1<W&&map[a][b+1]=='.'&&mark[a][b+1]==0)
	{
		ans++;
		mark[a][b+1] = 1;
		search(a,b+1);
	}
	if(b>0&&map[a][b-1]=='.'&&mark[a][b-1]==0)
	{
		ans++;
		mark[a][b-1] = 1;
		search(a,b-1);
	}
}

void input()
{
	while(scanf("%d%d",&W,&H)==2&&(W||H))
	{
		int i, j;
		int si, sj;
		
		ans = 1;
		for(i = 0; i < H; i++)
		{
			getchar();
			for(j = 0; j < W; j++)
			{
				mark[i][j] = 0;
				scanf("%c",&map[i][j]);
				if(map[i][j]=='@')
				{
					si = i;sj = j;
					mark[i][j] = 1;
				}
			}
		}
		search(si,sj);
		printf("%d\n",ans);
		for(i = 0; i < H; i++)
		{
			for(j = 0; j < W; j++)
				printf("%d ",mark[i][j]);
			printf("\n");
		}
	}
}

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

⌨️ 快捷键说明

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