准备机试时发现有的学校不能用java,为保险只好把C++再翻出来。后来又发现有的学校不能用VS?只能再把Dev C++翻出来。

————————————————————————————————————————————

题目:护林员盖房子

描述

在一片保护林中,护林员想要盖一座房子来居住,但他不能砍伐任何树木。
现在请你帮他计算:保护林中所能用来盖房子的矩形空地的最大面积。

输入

保护林用一个二维矩阵来表示,长宽都不超过20(即<=20)。
第一行是两个正整数m,n,表示矩阵有m行n列。
然后是m行,每行n个整数,用1代表树木,用0表示空地。

输出

一个正整数,表示保护林中能用来盖房子的最大矩形空地面积。

样例输入

4 5
0 1 0 1 1
0 1 0 0 1
0 0 0 0 0
0 1 1 0 1

样例输出

5

提示

子矩阵边长可以为1,也就是说:
0 0 0 0 0
依然是一个可以盖房子的子矩阵。

————————————————————————————————————————————

思路:就是求一个矩阵中的最大子矩阵,遍历两次即可。第一次:求出每个位置的最大连续区间;第二次:求出每个点向上的最大矩阵面积。要点:矩阵面积的求法用width*longth,width初值为1,每向上回溯一次width加一。

code:

#include<iostream>
#include<vector>
#include<algorithm>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main() {int m;int n;int map[21][21] = {0};cin >> m >> n;vector<vector<int> > array(m);for (int i = 0; i<m; ++i){for (int j = 0; j < n; ++j){int temp;cin >> temp;array[i].push_back(temp);}}for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (array[i][j] == 0)map[i][j] = 1;}}for (int i = 0; i < m; ++i){for (int j = 1; j < n; ++j){if (map[i][j] != 0 && map[i][j - 1] != 0)map[i][j] = map[i][j-1]+1;}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){cout<< map[i][j]<<" ";}cout<<endl;}int GG_max = 0; int width; int longth; int area;for (int i = 1; i < m; i++){for (int j = 1; j < n; j++){if (map[i][j] != 0){width = 1; longth = map[i][j]; area = width * longth; GG_max = max(GG_max,area);for(int k = i-1;k>=0;k--){if (map[k][j] != 0) {width++;longth = min(longth, map[k][j]);GG_max = max(GG_max, width*longth);}}}}}cout << GG_max;return 0;
}

算法题:护林员盖房子(C++)相关推荐

  1. 算法练习 护林员盖房子

    声明:没有OJ能跑,代码仅供思路参考,如有疑问,欢迎一起讨论 题目来源:百练2019信科研究生上机测试 题目:A:护林员盖房子 总时间限制: 1000ms 内存限制: 65536kB 描述 在一片保护 ...

  2. 【百练】护林员盖房子

    护林员盖房子 百练 2019信科研究生上机测试 A 总时间限制: 1000ms 内存限制: 65536kB 描述 在一片保护林中,护林员想要盖一座房子来居住,但他不能砍伐任何树木.  现在请你帮他计算 ...

  3. leetcode 用java_LeetCode算法题-Heaters(Java实现)

    这是悦乐书的第239次更新,第252篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第106题(顺位题号是475).冬天来了!您在比赛期间的第一份工作是设计一个固定温暖半径 ...

  4. vijos 1057 盖房子 dp 最大子正方形

    P1057盖房子 未递交 标签:[显示标签] 描述 永恒の灵魂最近得到了面积为n*m的一大块土地(高兴ING^_^),他想在这块土地上建造一所房子,这个房子必须是正方形的. 但是,这块土地并非十全十美 ...

  5. 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 字符串处理+动态规划 合集!

    Attention 秋招接近尾声,我总结了 牛客.WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对.测试.欢迎食用 本 ...

  6. c语言三只小猪 程序框图,语言教案:三只小猪盖房子

    三只小猪盖房子_300字从前有三只小猪,它们各在一片空地上盖房子.第一只小猪盖的是草房,第二只小猪盖的是木房,第三只小猪盖的是砖房.有一天,大灰狼来了,大灰狼来到三只小猪门前说:"小猪们,你 ...

  7. 【精选】Python入门算法题(三)

    今天无意中发现一道算法题很有意思,题不难,都是初中的知识,主要就是求一个固定点到一条直线的最短距离,我用了一个非常麻烦的方法才求出,我先是用余弦定理求出夹角再判断用勾股定理结合方程组解出来,很是麻烦, ...

  8. 【动态规划】盖房子(house)--未提交--已提交

    问题 D: 盖房子(house) 时间限制: 1 Sec  内存限制: 64 MB 提交: 27  解决: 16 [提交][状态][讨论版] 题目描述 FJ最近得到了面积为n*m的一大块土地,他想在这 ...

  9. JS小游戏 - 盖房子

    写这个JS,源于CSDN上看到的一道思考题,挺有趣的一个算法,于是根据规则写了这个JS. < html > < head >      < title > JS小游 ...

最新文章

  1. ixf文件 mysql导入,控制 PC/IXF 文件导入数据库的一般规则
  2. 003_JDK的Character类对Comparable接口的实现
  3. javsscript练习
  4. 某站点下载资源自己主动评论器
  5. android onresume时view,android – 当对话框出现时不调用OnResume
  6. C#读写txt文件的两种方法介绍
  7. java属于什么行业,吐血整理
  8. 为PHP7安装Windows Server 2012 R2过程记录
  9. HDU 4923 Room and Moor(瞎搞题)
  10. mkv210_image.c详解
  11. 查询2019-06-20日 和 2019-06-23  每个商品每天的入库情况
  12. 一切的开始源于网络的虚拟
  13. UltraEdit汇编语言高亮
  14. 3.9 Spark 键值对RDD编程
  15. ubuntu设置桌面图标
  16. 5-2 jmu-java-m05-自定义Judgeable接口 (10分)
  17. SLAM技术课程总结
  18. 我们该如何设计数据库:“普通——文艺——二逼”的区别
  19. mysql select 反选_checkbox的全选与反选
  20. Java下bug经历汇总

热门文章

  1. epson 300k II快速打印技巧
  2. 氨丙基表面修饰二氧化硅亚微米微球/二氧化硅微球表面负载硫化亚铁纳米晶
  3. debian 10 buster 安装配置 elastic search 和 中文, 拼音分词
  4. 华为mate20是android几,华为mate20x与mate20区别 mate20x好不好
  5. ctfshow 新手杯web
  6. 风云直播播放器 [封装网页播放]-在线免费看TV ver 2.0.1.2 【2013.07.08】
  7. 杀毒防护类软件的组合-转帖
  8. 专业高手如何快速看盘(转贴)
  9. 佳能hdr_佳能650D支持HDR吗
  10. 5.0QQ空间全套模块装扮:爱心情侣套装