1 条题解

  • 1
    @ 2023-12-2 14:02:22
    #include<stdio.h>
    #include<queue>
    #include<string.h>
    int m, n;
    char c[120][120];
    int num = 0;
    int dir[][2] = { {1,0},{1,1},{-1,-1},{-1,0},{0,1},{0,-1},{1,-1},{-1,1} };
    struct node
    {
    	int x;
    	int y;
    }q[20000];
    void bfs(int xa, int ya)
    {
    	int head = 1, tail = 1;
    	q[tail].x = xa;
    	q[tail].y = ya;
    	tail++;
    	num++;
    	while (head < tail)
    	{
    		int x = q[head].x;
    		int y = q[head].y;
    		for (int i = 0; i < 8; i++)
    		{
    			int nx = x + dir[i][0];
    			int ny = y + dir[i][1];
    			if (nx >= 0 && nx < m && ny >= 0 && ny < n && c[nx][ny] == 'W')
    			{
    				q[tail].x = nx;
    				q[tail].y = ny;
    				c[nx][ny] = '.';
    				tail++;
    			}
    		}
    		head++;
    	}
    }
    int main()
    {
    	scanf("%d%d", &m, &n);
    	for (int i = 0; i < m; i++)
    	{
    		scanf("%s", c[i]);
    	}
    	for (int i = 0; i < m; i++)
    	{
    		for (int j = 0; j < n; j++)
    		{
    			if (c[i][j] == 'W')
    			{
    				bfs(i, j);
    			}
    		}
    	}
    	printf("%d\n", num);
    	return 0;
    }
    
    • 1

    信息

    ID
    447
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    9
    已通过
    3
    上传者