我有问题。 假设我们有一个1和0的矩阵,我们想要找到它中包含1的最大矩形。下面的代码执行此操作并计算区域并将其存储在变量“res”中。我的问题是,如何在该矩阵中找到该矩形的坐标?我的意思是X,Y,H,W。其中X,Y是起始坐标和H,W(高度,宽度)是矩形的大小。我有点迷茫。谢谢你的回复。
int maximalRectangle(vector<vector<char> > &matrix)
{
int row = matrix.size();
if (row==0){return 0;}
int col = matrix[0].size();
int res=0;
vector<vector<int>> ones(row,vector<int>(col,0));
for (int i=0;i<row;i++){
for(int j=0;j<col;j++){
if (matrix[i][j]=='1'){
if (j==0){ones[i][j]=1;}
else{ones[i][j]=ones[i][j-1]+1;}
}
}
}
for (int i=0;i<row;i++){
for(int j=0;j<col;j++){
if (ones[i][j]!=0){
int h = i-1;
int tmp=ones[i][j];
int mini=ones[i][j];
while (h>=0){
if (ones[h][j]==0){
break;
}else{
if (ones[h][j]<mini){
mini = ones[h][j];
}
if (tmp< mini*(i-h+1)){
tmp= mini*(i-h+1);
}
h--;
}
}
if (res<tmp){
res=tmp;
}
}
}
}
return res;
}