1 solutions
-
0
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