[讨论] 计算总时间时...资料范围有重叠怎么写?

楼主: h10840206 (仕幸)   2014-05-06 09:01:15
急求解...希望大大能够耐心看或给我个方向...
标题有点朦胧...
我的意思是:
如果现在有10笔时间点的资料
1989 10 20
1989 12 10
1990 11 18
1991 12 21
1992 02 17
1994 01 05
1998 06 06
1999 05 17
1999 11 20
2000 01 17
【以下是我的想法,逻辑概念很差@@ 如果想法太烂请大大看最下面的“目的”就可以了】
我想要找出每个时间点增减半年都没有和其他资料重叠的时间点资料,
若是有重叠,相关的也有重叠,那就全部算一组
(我只想要一组之中,“头”和“尾”的资料即可)。
也就是说第一个资料增减半年的范围之中,和第二笔增减半年范围有重叠到,
第二笔又跟第三笔有重叠,但第三组和第四组就没有重叠了。
(增减一年看有没有包括其他笔资料,就可以知道有没有重叠到。)
那一二三笔算一组,然后我只要取一和三(头和尾)的资料就好。
分组完的结果会是这样↓
第[(1 2 3) (4 5) 6 (7 8 9 10)]资料
然后每组取头尾
第[1 3 4 5 6 7 10]资料
依此类推最后我想要找到的资料(矩阵)是:
1989 10 20
1990 11 18
1991 12 21
1992 02 17
1994 01 05
1998 06 06
2000 01 17
请问这种要怎么写呀?我用 || & 逻辑符号来求是否在范围内(不知道有没有更好的方法)
但我只会用max, min, find互相搭配
也只能找到被分组后的最大和最小而已...
(像刚刚那笔我只能找到[1 6 10])
一直碰到瓶颈...
写了两个礼拜了写不出来...
【目的】现在有37万笔这个时间资料的矩阵(370000x4)。
出现在上面那10笔
1989 10 20
1989 12 10
1990 11 18
1991 12 21
1992 02 17
1994 01 05
1998 06 06
1999 05 17
1999 11 20
2000 01 17
时间点前后增加减半年的资料个数N和时间T(天数)。
如果不好理解,请看这张图
http://ppt.cc/uPYD
我的那个想法是用那七笔资料位置找出第几个资料,
譬如说第一笔1989 4 20(1989 10 20半年前)的资料在271054
最后一笔1991 5 17(1990 11 18半年后)的资料在310101
这样这两个时间点之间的资料数就有310101-271054个。
然后再把每个区间的个数n、时间t相加起来得到总数个N和总时间T。
但这个算法天数不好求得...没办法一起算@@
我是想用switch来写30天或31天、是否为闰年...阿...好麻烦。
麻烦各位神人给小弟我给我个方向...
或是有更好的方法...@@
不然学校根本没人可以问...(大家都是自学,懂皮毛,一般只会自己的程式而已@@)

Links booklink

Contact Us: admin [ a t ] ucptt.com