| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3977 人关注过本帖, 1 人收藏
标题:最长平台问题
取消只看楼主 加入收藏
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏(1)
 问题点数:0 回复次数:6 
最长平台问题
一个从小到大排列的数组,这个数组中的一个平台就是连续的一段值相同的元素。例如:122333445中22,333等都是平台,333为最长平台。

试编写程序,
1)接收一个数组,把这个数组中的最长的平台找出来
2)指出最长平台的位置
3)编写一个程序,接收一个已经从小到大排好的数组,把所有的平台和他们的位置找出来

请:重点解答第三个问题,3Q!
搜索更多相关主题的帖子: 平台 从小到大 位置 排列 
2008-01-06 16:20
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
1)求最长平台的长度
程序代码:
/* ------------------------------------------------------ */
/*                  最长平台的长度length                  */
/* ------------------------------------------------------ */

int longest_plateau(int x[], int n)
{
     int  length = 1;         /* 平台长度大于等于1     */
     int  i;

     for (i = 1; i < n; i++)
          if (x[i] == x[i-length])
               length++;
     return length;
}
2)指出最长平台的位置;长度最后一次增加的平台的第一个元素的位置就是最长平台的起始位置
程序代码:
/* ------------------------------------------------------ */
/*                     最长平台的位置p                    */
/* ------------------------------------------------------ */

int longest_position(int x[], int n,int p)
{
     int  length = 1;         /*  平台长度大于等于1     */
     int  i;

     for (i = 1; i < n; i++)
          if (x[i] == x[i-length])
               {length++;p=i-length+1;}
     return p;
}


[[italic] 本帖最后由 ttaix 于 2008-1-6 20:44 编辑 [/italic]]
2008-01-06 16:22
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
回复 3# 的帖子
应该是找出给定数组中等值数据段,以及他们的位置和长度
2008-01-06 16:36
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
不行,你运行时可以的?
输出不是最长平台的参数,最后那条输出语句的i是什么意义啊?数组中元素两两比较的相等次数?
2008-01-06 17:45
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
回复 8# 的帖子
就输出的是每小段的相同段11222
结果是11 是一段
第二个 22  一段
第三个 222  一段

按你的程序3个连着的2会有3段,而且程序中有些不合理的地方(b数组就没有用到),比较次数太多,最重要的是和我要问的有一定距离,我水平很有限,在你的基础上解不出。
你很热心,真的很谢谢你。
2008-01-07 12:02
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
回复 11# 的帖子
我只想尽快解决我的问题!你的程序对我的问题并没有多大意义。
在你的程序中,假如输入111,那么将会输出3段
1。前2个1的起始和中止位置
2。前3个1的起始和中止位置
3。后2个1的起始和中止位置
不是吗?你程序的比较次数实在太多了。
我只想快点解决我的问题,而不是制造新问题!
2008-01-07 12:59
ttaix
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-28
收藏
得分:0 
回复 13# 的帖子
你真的很热心,我应该谢谢你!
这个问题我想太久了,心里很急,言语上得罪的地方请你原谅。
2008-01-07 13:23
快速回复:最长平台问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012922 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved