90pts,悬赏一关
查看原帖
90pts,悬赏一关
931106
Xiao800楼主2023/4/16 14:56

RT

QwQ

#include <iostream>
using namespace std;
const int MAXN=100;
int n,m,ans;
char map[MAXN][MAXN];
void dfs(int x,int y)
{
	map[x][y]='.';
	for(int i=-1; i<=1; i++)
		for(int j=-1; j<=1; j++)
		{
			int sx=x+i;
			int sy=y+j;
			if(sx>=0&&sx<=n&&sy>=0&&sy<=m&&map[sx][sy]=='W')
				dfs(sx,sy);
		}
	return;
}
int main()
{
	cin>>n>>m;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			cin>>map[i][j];
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			if(map[i][j]=='W')
				dfs(i,j),ans++;
	cout<<ans;
	return 0;
}

加上快读&快写更惨

#include <iostream>
using namespace std;
const int MAXN=100;
int n,m,ans;
char map[MAXN][MAXN];
inline int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return x*f;
}
inline int write(int x)
{
    if(x<0)
        putchar('-'),x=-x;
    if(x>9)
        write(x/10);
    putchar(x%10+'0');
}
void dfs(int x,int y)
{
	map[x][y]='.';
	for(int i=-1; i<=1; i++)
		for(int j=-1; j<=1; j++)
		{
			int sx=x+i;
			int sy=y+j;
			if(sx>=0&&sx<=n&&sy>=0&&sy<=m&&map[sx][sy]=='W')
				dfs(sx,sy);
		}
	return;
}
int main()
{
	n=read();
	m=read();
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			scanf("%c",map[i][j]);
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			if(map[i][j]=='W')
				dfs(i,j),ans++;
	write(ans);
	return 0;
}
2023/4/16 14:56
加载中...