1 solutions

  • 0
    @ 2025-11-5 17:01:46

    C :

    #include<stdio.h>
    #include<string.h>
    int a[1005][1005],x,c;
    int abc(int i,int j)
    {
    	x++;a[i][j]=2;
    	if(a[i][j+1]==0)c++;
    	if(a[i][j-1]==0)c++;
    	if(a[i+1][j]==0)c++;
    	if(a[i-1][j]==0)c++;
    	if(a[i][j-1]==1)abc(i,j-1);
    	if(a[i-1][j]==1)abc(i-1,j);
    	if(a[i][j+1]==1)abc(i,j+1);
    	if(a[i+1][j]==1)abc(i+1,j);
    	return x;
    }
    int main()
    {
    	int n,m,i,j,t,max,mx;
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
        	memset( a, 0, sizeof(a));
    		for(i=1;i<=n;i++)
    			for(j=1;j<=m;j++)
    				scanf("%1d",&a[i][j]);
    		c=x=max=t=0;
    		for(i=1;i<=n;i++)
    			for(j=1;j<=m;j++)
    			{
    				if(a[i][j]==1){
    					t=abc(i,j);
    					if(t>max){max=t;mx=c;}
    					c=0;x=0;}
    			}
    		printf("%d %d\n",max,mx);
    	}
    	return 0;
    }
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    #define maxn 1005
    int a[maxn][maxn];
    int ans1,ans2;
    int n,m;
    void dfs(int x,int y)
    {
        a[x][y]=2;
        if (x-1>=0){
            if (a[x-1][y]==1){
                ans1++;
                dfs(x-1,y);
            } else if (a[x-1][y]==0) ans2++;
        } else ans2++;
        if (x+1<n){
            if (a[x+1][y]==1){
                ans1++;
                dfs(x+1,y);
            } else if (a[x+1][y]==0) ans2++;
        } else ans2++;
        if (y-1>=0){
            if (a[x][y-1]==1){
                ans1++;
                dfs(x,y-1);
            } else if (a[x][y-1]==0) ans2++;
        } else ans2++;
        if (y+1<m){
            if (a[x][y+1]==1){
                ans1++;
                dfs(x,y+1);
            } else if (a[x][y+1]==0) ans2++;
        } else ans2++;
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        while(scanf("%d%d",&n,&m)!=EOF){
            memset(a,0,sizeof(a));
            for (int i=0;i<n;i++){
                char ss[maxn];
                scanf("%s",ss);
                for (int s=0;s<m;s++){
                    a[i][s]=ss[s]-'0';
                }
            }
            int ans11=0,ans22=0;
            for (int i=0;i<n;i++){
                for (int s=0;s<m;s++){
                    if (a[i][s])
                    {
                        ans1=1,ans2=0;
                        dfs(i,s);
                        ans11=max(ans11,ans1);
                        ans22=max(ans22,ans2);
                    }
                }
            }
            printf("%d %d\n",ans11,ans22);
        }
    }
    
    
    • 1

    Information

    ID
    18165
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By