一个M*N的矩阵,元素取值1或0,问如何找到最大的正方形,其所有的元素都为1
2015-11-21 21:58
615 查看
文章转自:文章链接
#include <stdio.h>
#define MAX 500
int matrix[MAX][MAX];
int min(int a, int b){
return a < b ? a : b;
}
int main()
{
int max = 1;
int m, n;
scanf("%d%d", &m,&n);
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
scanf("%d", &matrix[i][j]);
for(int i = 1; i < m; i++)
for(int j = 1; j < n; j++)
if(matrix[i][j] == 1)
{
int mmin = min(matrix[i - 1][j], matrix[i][j - 1]);
mmin = min(matrix[i - 1][j - 1], mmin);
matrix[i][j] = mmin + 1;
if(max < matrix[i][j])
max = matrix[i][j];
}
printf("%d", max);
return 0;
}
#include <stdio.h>
#define MAX 500
int matrix[MAX][MAX];
int min(int a, int b){
return a < b ? a : b;
}
int main()
{
int max = 1;
int m, n;
scanf("%d%d", &m,&n);
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
scanf("%d", &matrix[i][j]);
for(int i = 1; i < m; i++)
for(int j = 1; j < n; j++)
if(matrix[i][j] == 1)
{
int mmin = min(matrix[i - 1][j], matrix[i][j - 1]);
mmin = min(matrix[i - 1][j - 1], mmin);
matrix[i][j] = mmin + 1;
if(max < matrix[i][j])
max = matrix[i][j];
}
printf("%d", max);
return 0;
}
相关文章推荐
- 中缀表达式、后缀表达式及前缀表达式-学习笔记
- RocEDU.阅读.写作《图解TCP/IP》
- 编程基础知识之并发编程
- 住院护士
- HDOJ 5567 sequence1
- C#调用含有数组类形参和返回值的matlab函数实例
- 从头认识java-9.12 接口Collection与Iterator
- mysql+matlab配置
- 20151121
- DBCC CHECKDB
- android各种界面跳转(调用系统联系人,通话记录,发短信,发邮件,google搜索)
- HDU 2546 01背包
- linux端口查看
- HDU 1505 City Game (hdu1506 dp二维加强版)
- Android日志管理程序
- 解决“只能通过Chrome网上应用商店安装该程序”的方法
- 不能用==判断两个浮点数相等
- Android(12)Activity的生命周期
- 关于Linux
- HOJ Computer Transformation