P1387可怜的20分代码求调
  • 板块学术版
  • 楼主ltm_soviet
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/2 19:07
  • 上次更新2024/10/3 12:57:06
查看原帖
P1387可怜的20分代码求调
1383031
ltm_soviet楼主2024/10/2 19:07

rt

最大正方形

题目描述

在一个 n×mn\times m 的只包含 0011 的矩阵里找出一个不包含 00 的最大正方形,输出边长。

输入格式

输入文件第一行为两个整数 n,m(1n,m100)n,m(1\leq n,m\leq 100),接下来 nn 行,每行 mm 个数字,用空格隔开,0011

输出格式

一个整数,最大正方形的边长。

样例 #1

样例输入 #1
    4 4
    0 1 1 1
    1 1 1 0
    0 1 1 0
    1 1 0 1
样例输出 #1
    2
    #include<bits/stdc++.h>
    using namespace std;
    bool z[105][105];
    int s[105][105];
    int main()
    {
    	int n,m;
    	scanf("%d %d",&n,&m);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++)
    		{
    			scanf("%d",&z[i][j]);
    			s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+z[i][j];
    		}
    	int ans=INT_MIN;
    	for(int x=1;x<=n;x++)
    		for(int y=1;y<=m;y++)
    		{
    			for(int k=1;k<=min(n,m);k++)
    			{
    				int x1=x+k-1;
    				int y1=y+k-1;
    				int ss=s[x1][y1]-s[x1][y-1]-s[x-1][y1]+s[x-1][y-1];
    				if(ss==k*k)
    					ans=max(ans,k);
    			}
    		}
    	printf("%d",ans);
    	
    	return 0;
    }
2024/10/2 19:07
加载中...