法1:矩陣字首和(n^3)
列舉點i,j 和邊長o,如果右下角與左下角之間的數是完全平方數,既是正方形。
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace
std;
int w[109][109],s[109][109],n,m;
int main()
for(int i=1;i<=n;i++)
}for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
}printf("%d",ans);
return
0;}
法2:dp
詳見if(w[i][j])f[i][j]=min(f[i][j-1],f[i-1][j],f[i-1][j-1])+1;
f[i][j]表示以i,j為右下角的正方形的最大邊長
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace
std;
int w[109][109],f[109][109],n,m;
int main()
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
printf("%d",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...