当前位置: 首页 > news >正文

之梦英语版网站怎么做淘宝优惠券网站开发

之梦英语版网站怎么做,淘宝优惠券网站开发,杭州百度开户,校园在线网站怎么做真题 第十四届省赛 编程题 第5题 工人砌了一面奇特的砖墙,该墙由N列砖组成(1≤N≤1e6),且每列砖的数量为Ki(1≤Ki≤1e4,相邻砖块之间无缝隙),每块砖的长宽高都为1。小蓝为了美化这面…

真题

第十四届省赛 编程题 第5题

工人砌了一面奇特的砖墙,该墙由N列砖组成(1≤N≤1e6),且每列砖的数量为Ki(1≤Ki≤1e4,相邻砖块之间无缝隙),每块砖的长宽高都为1。小蓝为了美化这面墙,需要在这面墙中找到一块面积最大的矩形用于涂鸦,那么请你帮助小蓝找出最大矩形,并输出其面积。

例如:N=6,表示这面墙有6列,每列砖的数量依次为3、2、1、5、6、2,如下图:

图中虚线部分是一块面积最大的矩形,其面积为10.

输入描述:
第一行输入一个正整数N(1≤N≤1e6),表示这面砖墙由N列砖组成
第二行输入N个正整数Ki(1≤Ki≤1e4),依次表示每列砖的数量,正整数之间以一个空格隔开

输出描述:
输出一个正整数,表示最大矩形的面积

样例输入:
6
3 2 1 5 6 2

样例输出:
10

解题思路 

1.递归(标准解法)

找到最矮的列,分别计算左中右三个面积(分治),取其最大。
中:最矮列的列高*本区域的宽度(贪心假设)
左:最矮列左侧区域的最大矩形(递归调用)
右:最矮列右侧区域的最大矩形(递归调用)

2.伸展(娃儿创新)

遍历每一列,分别计算此列为中心,向两侧延展,直至遇到较矮的列,所形成的矩形的面积。
各面积存入列表,取其最小值。

代码

思路一 (递归版)

def tj1(wall):i=wall.index(min(wall))sL=tj1(wall[:i]) if i>0 else 0sR=tj1(wall[i+1:]) if i<len(wall)-1 else 0return max(wall[i]*len(wall),sL,sR)

思路二(伸展版)

def tj2(wall):sL=[]for i in range(len(wall)):s=1; h=wall[i]for j in range(i,0,-1):if(h>wall[j-1]):s+=i-j; breakelse:s+=i-1for j in range(i,len(wall)-1):if(h>wall[j+1]):s+=j-i; breakelse:s+=len(wall)-1-isL.append(s*h)return max(sL)

 (增加一个用while代替for...else的版本)

def tj2w(wall): # while版sMax=0; N=len(wall)for i in range(N):w=1; h=wall[i]j=iwhile(j>0 and h<=wall[j-1]): j-=1w+=i-jj=iwhile(j<N-1 and h<=wall[j+1]): j+=1w+=j-isNew=w*hif(sNew>sMax): sMax=sNewreturn sMax

测试代码

def timeit(num=100):t1=[];t2=[];size=[]for i in range(num):K=random.choices(range(1,1000001),k=random.randint(1,10000)); N=len(K)size.append(N)t0=time.time()ans=tj2(K)t2.append(time.time()-t0)t0=time.time()ans=tj1(K)t1.append(time.time()-t0)return t1,t2,size

结论

两种思路都很容易实现和调试成功,从用时看标准版整体稍多于娃儿的思路的1/2,仅2%的用例娃儿胜出(不排除python的time模块计时不准)。

但从孩子的学习成果来看,我还是感到非常欣慰,特别是python to C++时,很显然伸展版的思路更契合(不用做列表的切片)

http://www.yayakq.cn/news/265144/

相关文章:

  • 无锡做网站的企业昆山市建设局招投标网站
  • 邯郸做紧固件网站市住房城乡建设部网站
  • 怎么做解析视频网站重庆网站seo优化
  • 网站片区贵州网站建设费用
  • wap网站开发视频教程中国移动crm系统
  • 深圳网站建设伪静态 报价 jsp 语言建英语网站
  • 如何让网站打不开 解析未来的门户网站
  • 广安发展建设集团公司网站公司邮箱在哪里找
  • flash网站建设公司狗铺子做网页在那个网站
  • 哪个网站可以做魔方图片大全彩票网站开发 添加彩种教程
  • 网页设计的毕业设计做seo网站优化哪家强
  • 做网站多钱服装移动网站策划案
  • 深圳商城网站设计服务类网站怎么做
  • 怎样才能上百度seo内部优化方式包括
  • 百度站长中心最缺工的一百个职业
  • 西部数码网站正在建设中是什么意思规范网站维护 建设 管理
  • wordpress三站合一天津创思佳网络网站制作公司
  • 苏州免费发布信息网站气动科技东莞网站建设
  • 佛山网站建设公司点精小胡网站 301
  • 网站策划书市场分析2000字软件开发平台 devcloud
  • 吉林省长春网站建设wordpress clean options
  • 最牛论坛网站网络建设公司起名选字
  • 最新网站架构网店运营计划
  • 杭州的网站开发wordpress多级菜单会变慢
  • 服务好 售后好的网站建设各大网站网址
  • d网站建设的目的漯河做网站公司
  • 数码网站建设总体目标企业网站开发价钱低
  • 阿里云服务器如何用IP做网站网站托管维护代运营
  • 系统网站怎么做flash网站制作教程 下载
  • 什么网站可以做兼职设计过年做那些网站致富