

动态规划
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
int m=matrix.size();
if(m==0) return 0;
int n=matrix[0].size();
vector<vector<int>> dp(m,vector<int>(n,0));
int d=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(matrix[i][j]=='0'){
dp[i][j]=0;
}else{
if(i==0||j==0){
dp[i][j]=1;
}else{
dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1]))+1;
}
d=max(d,dp[i][j]);
}
}
}
int area=d*d;
return area;
}
};