CSP-最大的矩形Python实现

编程入门 行业动态 更新时间:2024-10-27 14:26:23

CSP-最大的<a href=https://www.elefans.com/category/jswz/34/1759498.html style=矩形Python实现"/>

CSP-最大的矩形Python实现

问题描述
  在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。

  请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。
 

输入格式
  第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。
  第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。
输出格式
  输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
样例输入
6
3 1 6 5 2 3
样例输出
10
思路:最近算法课刚学了动态规划,刚看到这道题就想着用动态规划做,做完之后发现不需要动态规划就可以,只需要计算出各个矩形之间的最小高度,填入二维列表中,然后分别计算面积,选出最大的就可以,下面贴上代码。

n = int(input())
nums = list(map(int,input().split()))
# 如果只有一个矩形直接输出
if n == 1:print(nums[0])
else:# 存放最大的矩形面积max_s = 0# 存放俩个矩形之间的最低高度temp = [[0]*n for i in range(n)]# 初始化for i in range(n):temp[i][i] = nums[i]# 计算俩个矩形间的最低高度for i in range(n-1):# 只需要初始化上三角for j in range(i+1,n):# 防止出现单个矩阵的面积就是最大面积的情况,不过不加也可以100分,可能测试数据没有这种情况max_t = max(temp[i][i],temp[j][j])temp[i][j] = min(temp[i][j-1],nums[j])t_s = (j-i+1)*temp[i][j]# 更新最大的矩形面积max_s = max(max_s,t_s,max_t)print(max_s)

第一次做的用动态规划的也贴上吧也是可以100分通过的,虽然多此一举了,就当练习了。

n = int(input())
nums = list(map(int,input().split()))
if n == 1:print(nums[0])
else:# 创建表格dp = [[0]*n for i in range(n)]# 存放俩个矩形之间的最低高度temp = [[0]*n for i in range(n)]# 初始化for i in range(n):dp[i][i] = nums[i]temp[i][i] = nums[i]# 先计算最低高度for i in range(n-1):# 只需要初始化上三角for j in range(i+1,n):temp[i][j] = min(temp[i][j-1],nums[j])def judge(i,j):return max(dp[i][j-1],dp[i+1][j],(j-i+1)*temp[i][j])i = 0j = 1k = 1# 填表格,只需要填充上三角,按照主对角线向右上方填充while j > i:if i < n-k:dp[i][j] = judge(i,j)i += 1j += 1else:i = 0k += 1j = k# 填充到右上角元素,跳出if i == 0 and j == n-1:dp[i][j] = judge(i,j)breakprint(dp[0][n-1])

最后贴上提交截图,感觉时间复杂度好像还是有点高,另外博主也是算法基础比较薄弱的,这学期算法课有组织的CSP考试所以想记录刷模拟题的过程,这些解题思路也都是自己想到的,可能不是最优的解法,如果对大家有帮助的话就更好啦,希望可以慢慢变强叭~~

第一次是用动态规划的,第二次把动态规划取了,时间复杂度差不多少了一半,但是少考虑了一种单个矩形面积可能就是最大的情况(注释中有写明,不过也可以100分通过,应该是测试数据中没有这种情况),第三次是将这种情况也考虑进去之后的(时间又上去了…)

更多推荐

CSP-最大的矩形Python实现

本文发布于:2023-07-28 18:44:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1278171.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:矩形   CSP   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!