求一个比较麻烦的算法!!!逻辑思维比较发达者进!
题目是这样的:
在数据库里有很多这样的记录:
工号 动态日期 动态代码 上次动态日期 上次动态代码
200 2004-05-05 1 2004-06-08 0
200 2004-06-08 0 2004-06-09 1
..........
已知:据动态代码可以确定这个人是否在岗,并且可能在某个月有多次动态变化,而且动态也可能不变化,因为该表涉及到职务变化.
问题:算出某个员工在某个月的出勤天数,即在岗天数.
问题点数:100、回复次数:9Top
1 楼syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*)回复于 2005-03-16 13:48:25 得分 30
动态代码1表示什么?0表示什么?Top
2 楼binbare(学习·学习·再学习!)回复于 2005-03-16 13:50:40 得分 0
请说明怎么样代表在岗Top
3 楼zhanqiangz(闲云野鹤-Overriding)回复于 2005-03-16 13:53:16 得分 20
楼主应该把问题描述清楚点!Top
4 楼syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*)回复于 2005-03-16 13:53:38 得分 10
按时间顺序读取在该月的该员工的动态记录中有变化的,计算第一次到第2次,第3次到第4次。。。
统计时间。这样得出来的(假设是25)就是2种情况,1是该员工到岗25天,2是缺25天。根据第一次变化的记录可以确定是这2种中的哪种。Top
5 楼syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*)回复于 2005-03-16 14:00:25 得分 30
1、只按顺序读取动态代码有变化的记录。(该月内)
2、如果有奇数条记录,在程序中虚拟一条该月最后一天,使它变偶数。
3、然后(第2n条记录的时间)-(第2n-1条记录时间)n从1到“记录数/2”循环再相加合是sum。
4、判断第一条是0变1的话,sum是到岗日数,反之是缺岗日数。Top
6 楼beibeilong(whylove)回复于 2005-03-16 14:04:46 得分 10
还是不明白Top
7 楼guanvee(CSDN上一个迷途小猪儿)回复于 2005-03-16 14:17:01 得分 0
楼主的回答:暂且把0看成不在岗,1看成在岗Top
8 楼guanvee(CSDN上一个迷途小猪儿)回复于 2005-03-16 14:21:43 得分 0
其实仿照我们实际处理这件事的思维,一层一层判断应该可以出来结果,但是比较烦琐
希望哪位高手能够想出比较简便的算法.
现在我才知道算法的重要性了.Top
9 楼guanvee(CSDN上一个迷途小猪儿)回复于 2005-03-16 14:46:01 得分 0
to: syeerzy(快乐永远)
感谢热情参与哈!
但是每次的动态变化不一定非得是1-0或者0-1,有可能不变.Top




