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 */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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吧