不会写。。。
class Solution {
public:
int f[1000][1000];
int maximalRectangle(vector<vector<char> > &matrix) {
for(int i=0;i<matrix.size();i++)
f[i][0]=matrix[i][0]=='1'?1:0;
for(int i=0;i<matrix.size();i++)
for(int j=1;j<matrix[i].size();j++)
{
if(matrix[i][j]=='1')
f[i][j]=f[i][j-1]>0?(f[i][j-1]+1):1;
else
f[i][j]=0;
}
int res=0;
for(int i=matrix.size()-1;i>=0;i--)
{
for(int j=matrix[i].size()-1;j>=0;j--)
{
int k=i;
int width=INT_MAX;
while(k>=0)
{
if(f[k][j]==0)
break;
width=min(width,f[k][j]);
res=max(res,(i-k+1)*width);
k--;
}
}
}
return res;
}
};