精英盒子 -> 程序设计 -> 祭祀广场求解... [打印本页]

jybox 2012-02-15 02:50

祭祀广场求解...


题目:http://www.bianchengla.com/oj/1/practise/problem?id=1002

  1. #include <iostream>
    using namespace std;
    int M,N;//题目中的M和N
    bool *map;//用于储存题目数据的二维数组
    inline int max(int a,int b){//返回两个数里大的一个
        return a>b?a:b;
    }
    bool checkArea(int x,int y,int a){
        for(int m=x;m<x+a;m++)//检查矩形(M,N)中,左上角坐标为(x,y),边长为a的正方形中是否可以安放广场
            for(int n=y;n<y+a;n++)
                if(map[m*M+n])
                    return false;
        return true;
    }
    int main(){
        while(cin>>M>>N,M*N){
            int A=1;//用于储存答案,先初始化为最小值1
            map=new bool[M*N];//申请内存
            for(int m=0;m<M;m++)
                for(int n=0;n<N;n++)
                    cin>>map[m*M+n];//把题目读入
            for(int m=0;m<M;m++)//对于map中的每列
                for(int n=0;n<N;n++){//对于map中的每行
                    int a=0;//要尝试的正方形的变长
                    while(++a,m+a<=M && n+a<=N){//当这个正方形没有超出map的边框时,每次循环a自增1
                        if(checkArea(m,n,a))//检查这个区域中是否可以安放广场
                            A=max(A,a);//如果可以,更新A
                    }
                }
            cout<<A<<endl;//输出答案
        }
    }


jybox 2012-02-15 02:56
大牛们快来吧

我的代码用样例输入,和很多自己编的数据都没问题
但是oj死活不给过

scxyscxy 2012-02-15 06:52
前排路过

墨阐 2012-02-15 18:16
提交没

内容来自[手机版]

jybox 2012-02-15 20:49
墨阐:提交没
内容来自[手机版]  (2012-02-15 18:16) 

oj说结果错误




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.044365 second(s),query:5 Gzip enabled