工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1731|回复: 0

最长平台(plateau.c)

[复制链接]
发表于 2006-10-27 17:05 | 显示全部楼层 |阅读模式
在一本叫《C语言名题精选百则技巧篇》(机械工业出版社——作者:冼镜光)第一页第一题是这样的:

已知一个已经从小到大排序的数组,这个数组中的一个平台(Plateau)就连续的一串值相同的元素,并且这一串元素不能再延伸。例如:1,2,2,3,3,3,4,5,5,6中,最长的平台就是3.
试编写一个程序,接收一个数组,把这个数组的最长平台找出来。

说明:
这个程序十分简单,但是要编写好却不容易,因此在编写程序时应该考虑以下几点:
1)使用的变量越少越好。
2)能否只把数组的元素第一个都只查一次就得到结果。
3)程序语句也要越少越好。



参考答案:

  1. int longest_plateau(int x[], int n)
  2. {
  3.      int  length = 1;         /* plateau length >= 1.     */
  4.      int  i;

  5.      for (i = 1; i < n; i++)
  6.           if (x[i] == x[i-length])
  7.                length++;
  8.      return length;
  9. }
复制代码


笨的方法我也会,可是要想到像参考答案那样,真不容易啊。
C语言只是个工具,实现的思维的真正重要啊!
您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-6-13 04:52

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表