盛最多水的容器
练习题目
求盛最多水的容器,实则是计算数列坐标能围成的最大矩形面积。
代码运行效果
python完整代码(算法有缺陷)
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
#/usr/bin/nve python
# coding: utf-8
import os
def clear():
'''Linux清屏'''
l = os.system('clear')
def sum_max(nums):
'''计算数列坐标能围成的最大矩形面积'''
#max_n = 0 #初始化数列最大值
#for i in nums: #找出数列中最大值并记录位置
#if i>max_n:
#max_n = i
#index = nums.index(i)
#被注释掉的前面五行代码与后两行代码等效,可以依个人喜欢选用。
max_n = max(nums)
index = nums.index(max_n)
max_s = 0 #初始化最大面积
for i in range(len(nums)):
s = abs(i-index)*nums[i]
if s>max_s:
max_s = s
return max_s
#main codes
nums = [
[1, 8, 6, 2, 5, 4, 8, 3, 7],
[1, 1],
[4, 3, 2, 1, 4],
[1, 2, 1],
[1, 1, 6, 9, 8],
[4, 7, 9, 4, 6, 9, 8, 3, 8]
] #定义输入数列
line = '﹊'*21 #一条插值字符串格式化语句定制输出最后结果变量
line0 = '\n'*6
for i in nums:
result = sum_max(i)
clear()
input(f'{line0}\n输入数列:{i}\n{line}\n 最大盛水容器:{result}\n{line}\n')
后三个数组的结果,都是错误的。显然,我设计的先找到最大元素,再遍历最大矩形面积的算法是有误区的。
修改算法。不再“投机取巧”,老实地依次全部遍历出最大面积。代码用python内置函数enumerate枚举同时获取元素的位置和值精简,颜值加分不少。😋😋
修改后的算法代码
#遍历列表所有元素两两构成的最大矩形面积,找出最大值
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
代码运行效果
这才是正确的结果咯。🤓🤓🤓
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
nums = [
[1, 8, 6, 2, 5, 4, 8, 3, 7],
[1, 1],
[4, 3, 2, 1, 4],
[1, 2, 1],
[1, 1, 6, 9, 8],
[4, 7, 9, 4, 6, 9, 8, 3, 8]
] #定义输入数列
line = '﹊'*21 #一条插值字符串格式化语句定制输出最后结果变量
line0 = '\n'*6
for i in nums:
result = sum_max(i)
clear()
input(f'{line0}\n输入数列:{i}\n{line}\n 最大盛水容器:{result}\n{line}\n')
我的博文推荐:
- 尼姆游戏(聪明版/傻瓜式•人机对战)(当前阅读3217)(代码优化版)
- 练习:字符串统计(坑:f‘string‘报错)(当前阅读1213)
- 练习:求列表(整数列表)平衡点(当前阅读1687)
- 密码强度检测器(当前阅读1570)
- 电话拨号键盘的字母组合(当前阅读1030)
推荐条件 点阅破千
参考文章:
上一篇: 在排序数组中查找元素的第一个和最后一个位置
下一篇: 通过内置对象理解python
回首页
精品文章:
来源:老齐教室
CSDN实用技巧博文: