当前位置:   article > 正文

【C++】动态规划_c++ 在一个n*m的巨大矩阵状空地中,停放着一些飞机,为了日后移动方便,即使土地资源

c++ 在一个n*m的巨大矩阵状空地中,停放着一些飞机,为了日后移动方便,即使土地资源
  1. /*
  2. 动态规划
  3. 有一个n*m大小的矩阵,其元素值为0或者1,求这个矩阵中全有1组成的最大方块其大小。
  4. 维数范围:(2<= n <= 50),m(2<= n <= 50)
  5. 代码如下:
  6. */
  7. #include <iostream>
  8. #include <fstream>
  9. #include <algorithm>
  10. #include <vector>
  11. using namespace std;
  12. int main()
  13. {
  14. ifstream ifs("execute.stdin");
  15. int iVal;
  16. int index = 0, n, m; // 矩阵的行和列
  17. int matrix[55][55]; // matrix[i][j]为右下顶点
  18. while ( ifs >> iVal ) // 判断是否读完文件
  19. {
  20. if (index == 0) n = iVal;
  21. if (index == 1) m = iVal;
  22. else if(index > 1)
  23. matrix[(index-2)/m][(index-2)%m] = iVal;
  24. ++index;
  25. }
  26. ifs.close();
  27. int MaxSize = 0;
  28. for (int i = 1; i < n; i++)
  29. for (int j = 1; j < m; j++)
  30. {
  31. if (matrix[i][j] == 1)
  32. {
  33. int min = matrix[i-1][j-1];
  34. if (min > matrix[i-1][j])
  35. min = matrix[i-1][j];
  36. if (min > matrix[i][j-1])
  37. min = matrix[i][j-1];
  38. matrix[i][j] = min + 1;
  39. }
  40. if (matrix[i][j] > MaxSize)
  41. MaxSize = matrix[i][j];
  42. }
  43. cout << MaxSize << endl;
  44. system("pause");
  45. return 0;
  46. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/718458
推荐阅读
相关标签
  

闽ICP备14008679号