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; } };
相关文章推荐
- 协会网站代码review之SQL实现模糊查询
- Android 开源项目分类汇总
- 钢琴基础
- 数据库红皮书
- iOS 数据持久化(1):属性列表与对象归档
- drivers/mfd/Mfd-core.c
- iOS 动画-时钟
- 搭建php环境
- 专题二总结
- mysql高级查询
- Node.js开发入门(八)——Angular简单示例
- iOS 动画-波浪
- javaScript基本用法
- 团队冲刺第一阶段个人工作总结5
- HDU2067卡特兰数
- 一定要弄懂的盒子模型
- C语言之数据类型(第一天)
- 【C++】Geekband-专题四:traints的使用
- 如何在github上建立个人主页
- HDU2050离散数学折线分割平面