首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个算法有关问题

2012-03-08 
请教一个算法问题~问个算法问题:比如说有这么一堆数:25 26 35 36 35 34 37 36 34 35 56 57 58我想要得到它

请教一个算法问题~
问个算法问题:
比如说有这么一堆数:
25 26 35 36 35 34 37 36 34 35 56 57 58

我想要得到它们的平均数~
1、只保留这些比较密集的数字 35 36 35 34 37 36 34 35再求它们的平均数 25 26 56 57 58这些暂时称为不合法数(这些数字不是密集的在一起)被去掉
2、25 26 35 36 35 34 37 36 34 35 56 57 58的平均数是39 
  不希望看到拿每一个数和39比较的方法去掉不合法的数(当然我想要的数字不是39)
3、再作个例子说明: 比如有一张白纸 上面有很多黑点 去掉那些分散开的点 保留那些最密集的点  
这个是怎么作一个判断的 ?

请就上面“25 26 35 36 35 34 37 36 34 35 56 57 58”写出一个算法来 要有具体的源代码~

[解决办法]
1、定义常数N;
2、假设有数组a[n],计算相邻项的差值得到数组b[n-1];
3、循环 分别取得b[n-1]中值大于N的项的下标,拆分a[n],得到一组一维数组List
4、循环List,如果List[i].size()<M,remove(如果要求不严格,size最大的项即为得到的子数组,否则处理remove后的List中的数组)
M,N为自定义的密集度 如题目中可设N=5,M=n/4=3

热点排行