北航1002-祭祀广场

来源:互联网 发布:湖北广电网络收费标准 编辑:程序博客网 时间:2024/04/20 22:45
#include<iostream>using namespace  std;int RetRes(int ,int ,int );int **p=NULL;int main(int argc,char* argv[]){int i,j,res=0,res_l=0;int a,b;cin>>a>>b;p=new int*[a];for(i=0;i<a;i++)p[i]=new int[b];for(i=0;i<a;i++)for(j=0;j<b;j++)scanf("%d",&p[i][j]);for(i=0;i<a;i++)for(j=0;j<b;j++){res=RetRes(i,j,a>b?b:a);if(res>res_l)res_l=res;}cout<<res_l<<endl;   for(i=0;i<b;i++)   delete p[i];   delete []p;return 0;}int RetRes(int m,int n,int min){int i,j,k,res=0,l,h;l=m;  h=n;for(k=1;k<=min;k++){if(p[m][n]!=0)return res;else if(k==1)res=1;for(i=h;i<=n;i++)if(p[m][i]!=0)return res;for(j=l;j<=m;j++)            if(p[j][n]!=0)return res;res=(i-h)>res?(i-h):res;     if(m+1<min && n+1<min) { m+=1; n+=1; } else return res;}//return res;}

明显的是 这个程序写的时间复杂度大了,程序超时了,因为这种是最笨的方法了--枚举,依次检测
哎,做ACM题不是为了竞赛主要是为了防止自己在闲下来的时候有事做,可以慢慢研究了!关于这道题的简洁算法,希望大侠路过可以指导下! 
感觉是这道题与矩阵有点关系,但是始终没找到方法.....