1 条题解
-
0
注意一下就好了
#include<cstdio> #define N 51 #define repu(i,x,y) for(i=x;i<=y;i++) #define max(a,b) (a>b?a:b) int n,m,a[N][N],f[N][N],x=0,s[N*N]; int dfs(int x,int y,int t) { f[x][y]=t; int i,j,k=4,s=1; if (!(a[x][y]&1) && y>1 && !f[x][y-1]) s+=dfs(x,y-1,t); if (!(a[x][y]&2) && x>1 && !f[x-1][y]) s+=dfs(x-1,y,t); if (!(a[x][y]&4) && y<m && !f[x][y+1]) s+=dfs(x,y+1,t); if (!(a[x][y]&8) && x<n && !f[x+1][y]) s+=dfs(x+1,y,t); return s; } int main() { int i,j,k,l,t,ans=0; scanf("%d%d",&m,&n); repu(i,1,n) repu(j,1,m) scanf("%d",&a[i][j]); repu(i,1,n) repu(j,1,m) if (!f[i][j]) ++x,s[x]=dfs(i,j,x),ans=max(ans,s[x]); printf("%d\n%d\n",x,ans); ans=0; for (j=1;j<=m;j++) for (i=n;i>=1;i--) { if (f[i][j]!=f[i-1][j]) if (s[f[i][j]]+s[f[i-1][j]]>ans) ans=s[f[i][j]]+s[f[i-1][j]],k=i,l=j,t=1; if (f[i][j]!=f[i][j+1]) if (s[f[i][j]]+s[f[i][j+1]]>ans) ans=s[f[i][j]]+s[f[i][j+1]],k=i,l=j,t=0; } printf("%d\n%d %d %c\n",ans,k,l,t?'N':'E'); }
- 1
信息
- ID
- 24
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 13
- 已通过
- 3
- 上传者