练习:柱状图中最大矩形


  • 我的CSDN主页
  • My Python 学习个人备忘录
  • 我的博文推荐

柱状图中的最大矩形


  1. 题目
  2. 代码运行效果
  3. 完整代码

练习题目

练习:柱状图中最大矩形_第1张图片

  此题类似我上一个练习“盛最多水的容器”,可以说完全一样,都是查找给定数组中两个数能构成的最大矩形。原题是用递归解的,我弄不来递归,只能用遍历来解。借用了“盛最多水的容器”的代码。

回首页

代码运行效果

练习:柱状图中最大矩形_第2张图片

练习:柱状图中最大矩形_第3张图片

练习:柱状图中最大矩形_第4张图片


回首页

python完整代码

(如果从语句注释不能清楚作用,请评论区留言指教和探讨。)
#/usr/bin/nve python
# coding: utf-8
import os


def clear():
    '''Linux清屏'''
    l = os.system('clear')


def sum_max(nums):
    '''计算柱状图中的最大矩形面积'''
    max_s = 0 #初始化最大面积
    #遍历列表所有元素两两构成的最大矩形面积,找出最大值
    for i, j in enumerate(nums): #枚举内置函数enumerate()同时获取元素位置和元素值。
        for m, n in enumerate(nums):
            min = j
            if j>n:
                min =n
            s = abs(i-m)*min
            if s>max_s:
                max_s = s
    return max_s


#main codes
stacks = [
[2, 1, 5, 6, 2, 3],
[1, 1, 1, 6, 9, 8],
[4, 7, 9, 4, 6, 9, 8, 3, 8]
        ] #定义输入数列
line = '﹊'*21 #一条插值字符串格式化语句定制输出最后结果变量
line0 = '\n'*6
for i in stacks:
    result = sum_max(i)
    clear()
    input(f'{line0}\n柱状数列:{i}\n{line}\n    柱状图中最大矩形:{result}\n{line}\n')

回首页

我的博文推荐:

    • 尼姆游戏(聪明版/傻瓜式•人机对战)(当前阅读3218)(代码优化版)
    • 练习:字符串统计(坑:f‘string‘报错)(当前阅读1250)
    • 练习:求列表(整数列表)平衡点(当前阅读1688)
    • 密码强度检测器(当前阅读1660)
    • 电话拨号键盘的字母组合(当前阅读1146)
    • 推荐条件 点阅破千

      参考文章:


      上一篇: 盛最多水的容器
      下一篇: 从内置对象了解Python


      回首页

      老齐漫画头像

      精品文章:

      • 正则表达式
      • 通过内置对象理解python
      • Python 完全自学手册
      • 海象运算符
      • Python中的 `!=`与`is not`不同
      • 学习编程的正确方法

      来源:老齐教室


      CSDN实用技巧博文:

      • 8个好用到爆的Python实用技巧

    你可能感兴趣的:(笔记,练习)