最大的正方形

2021-07-10 21:36:11 字數 1053 閱讀 8129

最大的正方形

描述:給你乙個n*m的矩陣,每個位置的值是0或1,求乙個面積最大的子矩陣,這個矩陣必須是乙個正方形,且裡面只能由1構成,輸出最大的正方形邊長

執行時間限制:2 sec

記憶體限制:無限制

輸入:第一行輸入兩個整數n,m,之後n行,每行m個數字,為矩陣第i行第j列的值,只可能是0或者1

n,m<=400

輸出:乙個整數,為最大正方形的邊長

樣例輸入:

3 31 1 1

1 1 1

0 0 1

樣例輸出:

2簡單的動態規劃

#include #include #include using namespace std;

#define maxn 405

#define max(x,y) x>=y?x:y

#define min(x,y) x<=y?x:y

int square[maxn][maxn];

int scale[maxn][maxn];

int calcul(int n , int m)

int maxsize =0;

for( int i = 0; i< n; i++)

for( int j = 0 ; j< m; j++)

if( scale[i][j] > maxsize)

maxsize = scale[i][j];

return maxsize;

}int main()

{ //freopen("input.txt","r",stdin);

int n,m;

while (cin>>n>>m)

{ memset(square,0,sizeof(square));

memset(scale,0,sizeof(scale));

for( int i = 0; i< n; i++)

for( int j = 0 ; j< m; j++)

cin>>square[i][j];

int maxlen = calcul(n,m);

cout<

最大正方形

題目鏈結 在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。輸入格式 輸入檔案第一行為兩個整數n,m 1 n,m 100 接下來n行,每行m個數字,用空格隔開,0或1.輸出格式 乙個整數,最大正方形的邊長 輸入樣例 1 複製 4 4 0 1 1 1 1 1 1 0 0 1 1...

最大正方形

題解 if a i j 1 f i j min min f i j 1 f i 1 j f i 1 j 1 1 f i j 表示以節點i,j為右下角,可構成的最大正方形的邊長。只有a i j 1時,節點i,j才能作為正方形的右下角 對於乙個已經確定的f i j x,它表明包括節點i,j在內向上x個節...

最大正方形

一.題目描述 在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。示例 輸入 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 輸出 4 二.思路 動態規劃 當前元素matrix i j 對應的最大正方形邊長跟matrix i 1 j m...