在乙個n*m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。
輸入格式:
輸入檔案第一行為兩個整數n,m(1<=n,m<=100),接下來n行,每行m個數字,用空格隔開,0或1.
輸出格式:
乙個整數,最大正方形的邊長
輸入樣例#1:
複製
4 40 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...