1 条题解

  • 0
    @ 2023-6-11 12:17:09

    C :

    #include<stdio.h>
    const int x0[]={0,0,1,1,1,-1,-1,-1},y0[]={1,-1,-1,0,1,-1,0,1};
    int n,m,cnt;
    char c[110][110];
    void dfs(int x,int y)
    {
    	for(int i=0;i<8;i++)
    	{
    		int x1=x+x0[i],y1=y+y0[i];
    		if(x1>0&&x1<=n&&y1>=0&&y1<m&&c[x1][y1]=='W')
    		{
    			c[x1][y1]='.';
    			dfs(x1,y1);
    		}
    	}
    }
    int main()
    {
    	scanf("%d %d",&n,&m);
    	for(int i=1;i<=n;i++)
    	scanf("%s",c[i]);
    	for(int i=1;i<=n;i++)
    	for(int j=0;j<m;j++)
    	if(c[i][j]=='W')
    	{
    		c[i][j]='.';
    		dfs(i,j);
    		cnt++;
    	}
    	printf("%d",cnt);
    	return 0;
    } 
    

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    char a[150][150];
    void num(int x,int y){
        a[x][y]='.';
        if(a[x-1][y]=='W')num(x-1,y);
        if(a[x-1][y-1]=='W')num(x-1,y-1);
        if(a[x-1][y+1]=='W')num(x-1,y+1);
        if(a[x][y-1]=='W')num(x,y-1);
        if(a[x+1][y-1]=='W')num(x+1,y-1);
        if(a[x+1][y+1]=='W')num(x+1,y+1);
        if(a[x+1][y]=='W')num(x+1,y);
        if(a[x][y+1]=='W')num(x,y+1);
         
    }
    int main(){
        cin>>n>>m;
        int i,j,c=0;
        for(i=1;i<=n;i++){
            for(j=1;j<=m;j++){
                cin>>a[i][j];
            }
        }
        for(i=1;i<=n;i++){
            for(j=1;j<=m;j++){
                if(a[i][j]=='W'){
                    c++;
                    num(i,j);
                }
            }
        }
        cout<<c<<endl;
        return 0;
    }
    
    
    • 1

    信息

    ID
    2355
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者