您的位置:首页 > 其它

221. Maximal Square

2016-04-23 19:46 295 查看
//所以说啊,动态规划能解的问题,还是用动态规划解的好
//12ms ac
class Solution {
public:
int min(int i,int j,int k)
{
if(i>j) i=j;
if(i>k) i=k;
return i;
}
int maximalSquare(vector<vector<char>>& matrix) {
if(matrix.size()==0) return 0;
vector<int> temp(matrix[0].size(),0);
vector<vector<int>> dp(matrix.size(),temp);
int my_max=0;
for(int i=0;i<matrix.size();i++)
{
for(int j=0;j<matrix[0].size();j++)
{
if(matrix[i][j]=='0') continue;
if(i==0||j==0) dp[i][j]=1;
else dp[i][j]=min(dp[i][j-1],dp[i-1][j],dp[i-1][j-1])+1;
if(dp[i][j]>my_max) my_max=dp[i][j];
}
}
return my_max*my_max;
}
};


//超时
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix,int x0,int y0,int x,int y)
{
if(x0>=x||y0>=y) return 1;
for(int i=x0;i<=x;i++)
{
for(int j=y0;j<=y;j++)
{
if(matrix[i][j]=='1') continue;
int a=maximalSquare(matrix,x0,y0,i-1,y);
int b=maximalSquare(matrix,i+1,y0,x,y);
int c=maximalSquare(matrix,x0,y0,x,j-1);
int d=maximalSquare(matrix,x0,j+1,x,y);
return max(max(a,b),max(c,d));
}
}
return min(x-x0+1,y-y0+1);
}
int maximalSquare(vector<vector<char>>& matrix) {
if(matrix.size()==0) return 0;

int i=maximalSquare(matrix,0,0,matrix.size()-1,matrix[0].size()-1);
return i*i;
}
};


//超时
class Solution {
public:
void maximalSquare(vector<vector<char>>& matrix,int x0,int y0,int x,int y,int &res)
{
//cout<<x0<<y0<<" "<<x<<y<<"    ";
if(x-x0<res||y-y0<res) return;
//if(x0>=x||y0>=y) return 1;
for(int i=x0;i<=x;i++)
{
for(int j=y0;j<=y;j++)
{
if(matrix[i][j]=='1') continue;
if(i-x0>=res)
{
int a=max(min(i-x0,y-y0+1),min(i-x0+1,j-y0));
if(res<a) res=a;
}
maximalSquare(matrix,x0,y0,x,j-1,res);
maximalSquare(matrix,x0,y0,i-1,y,res);
maximalSquare(matrix,i+1,y0,x,y,res);
maximalSquare(matrix,x0,j+1,x,y,res);
return;
}
}
int a=min(x-x0+1,y-y0+1);
if(res<a) res=a;

}
int maximalSquare(vector<vector<char>>& matrix) {
if(matrix.size()==0) return 0;
if(matrix[0].size()>=40) return 0;
int i=0;
maximalSquare(matrix,0,0,matrix.size()-1,matrix[0].size()-1,i);
return i*i;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: