zoukankan      html  css  js  c++  java
  • NUSS1017

    #include<stdio.h>
    #include
    <string.h>

    int n, i, j, k, mxa;
    bool f[2001][2001];
    int r[2001][2001];

    int uu[2001][2001];

    int main()
    {
        
    while(scanf("%d",&n)==1)
        
    {
            mxa
    =0;
            
    for(i=0;i<n;i++)
                
    for(j=0;j<n;j++)
                    scanf(
    "%d",&f[i][j]);
            
    ///
            for(i=0;i<n;i++)
            
    {
                
    int c=0;
                
    for(j=n-1;j>=0;j--)
                
    {
                    
    if(f[i][j]==0)c++;
                    
    else
                        c
    =0;
                    r[i][j]
    =c;
                }

            }

            memset(uu,
    0,sizeof(uu));
            
    for(i=0;i<n;i++)
            
    {
                
    for(j=0;j<n;j++)
                
    {
                    
    if(i!=0 && r[i][j]<=r[i-1][j])
                    
    {
                        
    if(r[i][j]==r[i-1][j])
                            uu[i][j]
    =uu[i-1][j]+1;
                        
    else
                        
    {
                            uu[i][j]
    =2;
                        
    int ii=2;
                        
    while(i-ii >=0 && r[i][j]<=r[i-ii][j])
                        
    {
                            
    if(r[i][j]==r[i-ii][j])
                            
    {
                                uu[i][j]
    =ii+uu[i-ii][j];
                                
    break;
                            }

                            uu[i][j]
    ++;
                            ii
    ++;
                        }

                        }

                    }

                    
    else
                        uu[i][j]
    =1;
                }

            }

            
    for(i=0;i<n;i++)
            
    {
                
    for(j=0;j<n;j++)
                
    {
                    
    if(mxa<r[i][j]*uu[i][j])
                        mxa
    =r[i][j]*uu[i][j];
                }

            }
    //
            for(j=0;j<n;j++)
            
    {
                
    int c=0;
                
    for(i=n-1;i>=0;i--)
                
    {
                    
    if(f[i][j]==0)c++;
                    
    else
                        c
    =0;
                    r[i][j]
    =c;
                }

            }

            memset(uu,
    0,sizeof(uu));
            
    for(j=n-1;j>=0;j--)
            
    {
                
    for(i=0;i<n;i++)
                
    {
                    
    if(j!=n-1 && r[i][j]<=r[i][j+1])
                    
    {
                        
    if(r[i][j]==r[i][j+1])
                            uu[i][j]
    =uu[i][j+1]+1;
                        
    else
                        
    {
                            uu[i][j]
    =2;
                        
    int ii=2;
                        
    while(j+ii <&& r[i][j]<=r[i][j+ii])
                        
    {
                            
    if(r[i][j]==r[i][j+ii])
                            
    {
                                uu[i][j]
    =ii+uu[i][j+ii];
                                
    break;
                            }

                            uu[i][j]
    ++;
                            ii
    ++;
                        }

                        }

                    }

                    
    else
                        uu[i][j]
    =1;
                }

            }

            
    for(i=0;i<n;i++)
            
    {
                
    for(j=0;j<n;j++)
                
    {
                    
    if(mxa<r[i][j]*uu[i][j])
                        mxa
    =r[i][j]*uu[i][j];
                }

            }
    //
            for(i=0;i<n;i++)
            
    {
                
    int c=0;
                
    for(j=0;j<n;j++)
                
    {
                    
    if(f[i][j]==0)c++;
                    
    else
                        c
    =0;
                    r[i][j]
    =c;
                }

            }

            memset(uu,
    0,sizeof(uu));
            
    for(j=0;j<n;j++)
            
    {
                
    for(i=n-1;i>=0;i--)
                
    {
                    
    if(i!=n-1 && r[i][j]<=r[i+1][j])
                    
    {
                        
    if(r[i][j]==r[i+1][j])
                            uu[i][j]
    =uu[i+1][j]+1;
                        
    else
                        
    {
                            uu[i][j]
    =2;
                        
    int ii=2;
                        
    while(i+ii <&& r[i][j]<=r[i+ii][j])
                        
    {
                            
    if(r[i][j]==r[i+ii][j])
                            
    {
                                uu[i][j]
    =ii+uu[i+ii][j];
                                
    break;
                            }

                            uu[i][j]
    ++;
                            ii
    ++;
                        }

                        }

                    }

                    
    else
                        uu[i][j]
    =1;
                }

            }

            
    for(i=0;i<n;i++)
            
    {
                
    for(j=0;j<n;j++)
                
    {
                    
    if(mxa<r[i][j]*uu[i][j])
                        mxa
    =r[i][j]*uu[i][j];
                }

            }
    //
            for(j=0;j<n;j++)
            
    {
                
    int c=0;
                
    for(i=0;i<n;i++)
                
    {
                    
    if(f[i][j]==0)c++;
                    
    else
                        c
    =0;
                    r[i][j]
    =c;
                }

            }

            memset(uu,
    0,sizeof(uu));
            
    for(i=0;i<n;i++)
            
    {
                
    for(j=0;j<n;j++)
                
    {
                    
    if(j!=0 && r[i][j]<=r[i][j-1])
                    
    {
                        
    if(r[i][j]==r[i][j-1])
                            uu[i][j]
    =uu[i][j-1]+1;
                        
    else
                        
    {
                            uu[i][j]
    =2;
                        
    int ii=2;
                        
    while(i-ii >=0 && r[i][j]<=r[i][j-ii])
                        
    {
                            
    if(r[i][j]==r[i][j-ii])
                            
    {
                                uu[i][j]
    =ii+uu[i][j-ii];
                                
    break;
                            }

                            uu[i][j]
    ++;
                            ii
    ++;
                        }

                        }

                    }

                    
    else
                        uu[i][j]
    =1;
                }

            }

            
    for(i=0;i<n;i++)
            
    {
                
    for(j=0;j<n;j++)
                
    {
                    
    if(mxa<r[i][j]*uu[i][j])
                        mxa
    =r[i][j]*uu[i][j];
                }

            }


            printf(
    "%d\n",mxa);
        }

        
    return 0;
    }
  • 相关阅读:
    朱晔和你聊Spring系列S1E10:强大且复杂的Spring Security(含OAuth2三角色+三模式完整例子)
    朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解
    朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)
    朱晔和你聊Spring系列S1E7:简单好用的Spring Boot Actuator
    朱晔和你聊Spring系列S1E6:容易犯错的Spring AOP
    朱晔和你聊Spring系列S1E5:Spring WebFlux小探
    朱晔和你聊Spring系列S1E4:灵活但不算好用的Spring MVC
    朱晔和你聊Spring系列S1E3:Spring咖啡罐里的豆子
    朱晔和你聊Spring系列S1E2:SpringBoot并不神秘
    朱晔的互联网架构实践心得S1E10:数据的权衡和折腾【系列完】
  • 原文地址:https://www.cnblogs.com/SQL/p/912496.html
Copyright © 2011-2022 走看看