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;
    }
  • 相关阅读:
    密码保护
    实现搜索功能
    完成个人中心—导航标签
    个人中心标签页导航
    评论列表显示及排序,个人中心显示
    完成评论功能
    从首页问答标题到问答详情页
    首页列表显示全部问答,完成问答详情页布局。
    JavaScript Array Reduce用于数组求和
    【Angular5】 返回前一页面 go back to previous page
  • 原文地址:https://www.cnblogs.com/SQL/p/912496.html
Copyright © 2011-2022 走看看