C语言名题精选百则之最长平台
文章目錄
冼镜光老师的《C语言名题精选百则》是我最喜欢的一本算法书, 因为它比较亲民些。大一的时候见到这本书,顿时爱不释手,只是当时水平有限,很多题目做的很吃力,就没有继续做下去了。比较意外的是,这本书印刷的次数竟然很少,有些可惜。还有书中都是用C语言写的,对于专注算法来说,并不是很好,于是决定抽空用Python重写。
已知一个已经从小到大排序的数组,这个数组中的一个平台(plateau) 就是连续的一串相同的元素,并且这一串元素不能再延伸。
例如,在1,2,2,3,3,3,4,5,5,6中1,2.2,3.3.3,4,5.5,6都是平台。试编写一个程序,接受一个数组,把这个数组中最长的平台找出来。
在上面的例子中,3.3.3就是该数组的最长平台。
说明:
这个程序十分简单,但是要编写号却不容易,因此在编写程序时应该考虑下面几点:
- 使用的变量越少越好
- 能否只把数组的元素每一个只查一次就得到结果?
- 程序语句越少越好。
这个问题曾经困扰过 David Gries这位知名的技术机科学家。本题与解答取自David Gries编写的有光程序设计的专著。
解答见pleateau.py