请教一个算法?高分送
现在程序中已知一些整数的数据段,这些数据段的最小,最大值是可以相互交叉的
比如
1--5
4--9
-2--3
6--18
....
请问如何用最快捷的算法,找出这些所有的数据段包含的不重复的整数个数来
问题点数:100、回复次数:9Top
1 楼ly_liuyang(Liu Yang LYSoft http://lysoft.7u7.net)回复于 2004-09-03 15:52:11 得分 0
我在另外那里回复了:)
感觉没什么好算法了Top
2 楼joymouse(快乐鼠)回复于 2004-09-03 15:57:28 得分 0
再复杂一点,假设除了数据段以外,还包含一些其他的离散整数,这些整数有些是包含在数据段中的,有些是包含在数据段以外的
如何用最简单的方法,判断出不重复的整数个数来?
是不是像奥林匹克的数学竞赛?
各位务必帮忙,我都快急死了,谢谢!Top
3 楼zwjchina(蒲石)回复于 2004-09-03 16:07:00 得分 100
使用集合看看
定义:
type
T0to255 = set of 1..255;
T256to511 = set of 256..511;
或者
T_122to122 = set of -122..122;
....
等等,根据你数的一些范围来定义
然后使用集合操作
[1..5] + [4..9] + [-2..-3] + [6..18]
然后计算合并后的集合的元素个数!
呵呵,在网吧,无法测试,呵呵!
Top
4 楼zwjchina(蒲石)回复于 2004-09-03 16:08:09 得分 0
数的大致范围应该给定吧Top
5 楼joymouse(快乐鼠)回复于 2004-09-03 16:27:00 得分 0
这个问题的由来是这样的:
我写的程序,允许用户输入一些孤立的电话号码,比如01086100000,01086120000,当然也允许用户输入一些号码段,比如从01023450000到0102459999,号码段之间允许有号码的交叉,最后,我要判断真实的不重复的号码个数有多少?
这就是我提问的由来
Top
6 楼dxphero(火鸟hero)回复于 2004-09-03 16:32:54 得分 0
你把它们放到一个集合里面然后你读取这个集合中所有不重复的就可以了Top
7 楼zwjchina(蒲石)回复于 2004-09-03 16:35:27 得分 0
看看你的另一篇,我说的应该可以解决了Top
8 楼joymouse(快乐鼠)回复于 2004-09-03 16:41:26 得分 0
好像不行,现在的关键是我无法知道这个集合的大小,我怎么定义?Top
9 楼zwjchina(蒲石)回复于 2004-09-03 16:45:06 得分 0
不用我这里说的方法,对与你的要求估计不行,你另开的一篇里有我的说明!Top




