赞
踩
- /*
- 动态规划
- 有一个n*m大小的矩阵,其元素值为0或者1,求这个矩阵中全有1组成的最大方块其大小。
- 维数范围:(2<= n <= 50),m(2<= n <= 50)
- 代码如下:
- */
- #include <iostream>
- #include <fstream>
- #include <algorithm>
- #include <vector>
-
- using namespace std;
-
- int main()
- {
- ifstream ifs("execute.stdin");
- int iVal;
- int index = 0, n, m; // 矩阵的行和列
- int matrix[55][55]; // matrix[i][j]为右下顶点
- while ( ifs >> iVal ) // 判断是否读完文件
- {
- if (index == 0) n = iVal;
- if (index == 1) m = iVal;
- else if(index > 1)
- matrix[(index-2)/m][(index-2)%m] = iVal;
- ++index;
- }
- ifs.close();
-
- int MaxSize = 0;
- for (int i = 1; i < n; i++)
- for (int j = 1; j < m; j++)
- {
- if (matrix[i][j] == 1)
- {
- int min = matrix[i-1][j-1];
-
- if (min > matrix[i-1][j])
- min = matrix[i-1][j];
-
- if (min > matrix[i][j-1])
- min = matrix[i][j-1];
-
- matrix[i][j] = min + 1;
- }
-
- if (matrix[i][j] > MaxSize)
- MaxSize = matrix[i][j];
- }
-
- cout << MaxSize << endl;
- system("pause");
- return 0;
- }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。