请问我哪一步有问题啊,为什么这种情况算的是错的啊?
int dp[301][301]; //dp[i][j]表示以matrix[i][j]为右下角的只包含1的最大正方形边长
int min(int x,int y,int z)
{
int demp;
demp=x>y? y:x;
if(demp>z) demp=z;
return demp;
}
int maximalSquare(char** matrix, int matrixSize, int* matrixColSize) {
int i,j,max=0;
for(i=0;i<matrixSize;i++)
{
for(j=0;j<matrixColSize[0];j++)
{
if(i==0||j==0)
dp[i][j]=matrix[i][0]-'0';
else
{
if(matrix[i][j]=='1')
dp[i][j]=1+min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]);
else
dp[i][j]=0;
}
if(dp[i][j]>max)
max=dp[i][j];
}
}
return pow(max,2);
}