Scau 10327 Biggest Square

时间限制:1000MS  内存限制:65535K
提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC

 

Description

You are given a M*M cloth with some holes on it. Your task is to find a biggest square cloth from it. The following is an example(M=5)




输入格式

The first line contains the one integer number M (1<= M<=1,000). Then M lines are following. Each line contains M 
charactors which “.” means cloth and “H” means hole.



输出格式

The only line of the output contains area of the biggest square cloth mentioned above.



 

输入样例

5
H...H
.....
.....
.HHH.
.....



 

输出样例

9



 

作者

 admin

思路:比较经典的模型了,大白上有几乎一样的原题

复制代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1005;
char Map[N][N];
int Up[N][N], Left[N][N], Right[N][N];
int n;
void getL() {
    for(int i = 1; i <= n; ++i) {
        int lo = 0;
        for(int j = 1; j <= n; ++j) {
           if(Map[i][j] == '.') {
                Up[i][j] = Up[i - 1][j] + 1;
                Left[i][j] = max(Left[i - 1][j], lo + 1);
           }else {
                Up[i][j] = Left[i][j] = 0;
                lo = j;
           }
        }
    }
}
int ans = 0;
void getR() {
    for(int i = 1; i <= n; ++i) {
        int ro = n + 1;
        for(int j = n; j >= 1; --j) {
            if(Map[i][j] == '.') {
                Right[i][j] = min(Right[i - 1][j], ro - 1);
            }else {
                Right[i][j] = n;
                ro = j;
            }
            ans = max(ans, min(Up[i][j], Right[i][j] - Left[i][j] + 1));
        }
    }
}
void show(int a[][N]) {
    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= n; ++j) printf("%d ", a[i][j]);
        puts("");
    }
}
int main() {
    while(~scanf("%d", &n)) {
        for(int i = 1; i <= n; ++i) scanf("%s", Map[i] + 1);
        for(int i = 0; i <= n; ++i) Up[0][i] = 0;
        for(int i = 0; i <= n; ++i) Left[0][i] = 0;
        for(int i = 0; i <= n; ++i) Right[0][i] = n;
        getL();
        getR();
        printf("%d\n", ans * ans);
    }
    return 0;
}
/*
5
HH.HH
.....
.....
H...H
HHHHH
*/
View Code
复制代码

 

posted @   JL_Zhou  阅读(248)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示