原题题目
代码实现(首刷自解)
int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){
int dp[301][301],i,j,max = 0;
memset(dp,0,sizeof(dp));
for(i=0;i<matrixSize;i++)
{
for(j=0;j<matrixColSize[0];j++)
{
if(matrix[i][j] == '1')
dp[i][j] = 1;
}
}
for(i=0;i<matrixSize;i++)
{
for(j=0;j<matrixColSize[i];j++)
{
if(i && j)
{
if(dp[i][j] && dp[i-1][j-1] && dp[i-1][j] && dp[i][j-1])
dp[i][j] = fmin(dp[i-1][j-1],fmin(dp[i-1][j],dp[i][j-1])) + 1;
}
if(dp[i][j] > max)
max = dp[i][j];
}
}
return pow(max,2);
}