P1387 最大正方形

2021-08-18 16:48:40 字數 1025 閱讀 2110

在乙個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 0

1 1 0 1

輸出樣例#1:

複製

2

解法一:

先列舉各個點的座標,然後根據座標(i,j)得到可以列舉的邊長k=min(i,j),然後開始列舉邊長

#include#include#define maxn 102 

using namespace std;

int map[maxn][maxn];

int n, m;

int ans=1;

int main()

}if (flag)break;

}if (!flag)

ans = max(ans,k+1);//這裡要加1,因為i-k,j-k會實際上會形成k+1邊長的正方形

}} }

cout << ans;

return 0;

}

解法二:dp

#include#include#define maxn 102 

using namespace std;

int map[maxn][maxn];

int dp[maxn][maxn];

int n, m;

int ans;

int main()

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

for (int j = 1; j <= m; j++) }

cout << ans;

return 0;

}

P1387 最大正方形

法1 矩陣字首和 n 3 列舉點i,j 和邊長o,如果右下角與左下角之間的數是完全平方數,既是正方形。include include include include include include include include define ll long long using namespace...

P1387 最大正方形

在乙個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 0 1 1...

P1387 最大正方形

在乙個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 0 1 1 0...