|
在一本叫《C语言名题精选百则技巧篇》(机械工业出版社——作者:冼镜光)第一页第一题是这样的:
已知一个已经从小到大排序的数组,这个数组中的一个平台(Plateau)就连续的一串值相同的元素,并且这一串元素不能再延伸。例如:1,2,2,3,3,3,4,5,5,6中,最长的平台就是3.
试编写一个程序,接收一个数组,把这个数组的最长平台找出来。
说明:
这个程序十分简单,但是要编写好却不容易,因此在编写程序时应该考虑以下几点:
1)使用的变量越少越好。
2)能否只把数组的元素第一个都只查一次就得到结果。
3)程序语句也要越少越好。
参考答案:
- int longest_plateau(int x[], int n)
- {
- int length = 1; /* plateau length >= 1. */
- int i;
- for (i = 1; i < n; i++)
- if (x[i] == x[i-length])
- length++;
- return length;
- }
复制代码
笨的方法我也会,可是要想到像参考答案那样,真不容易啊。
C语言只是个工具,实现的思维的真正重要啊! |
|