先声明此题没用到数据库,所以不要回答说用数据库来搞!有n个文件,每个文件中有条记录包含一个个开始时间和一个结束时间。时间格式为YYYY-MM-DD **:**:**问题是:如何找出这N个文件中时间相互重叠(交叉)的中持续时间最长的那条记录?
比如说2006-12-03 20:50:30(开始时间) 20:51:55(结束时间)
和2006-12-03 20:51:05 20:53:30时间有交叉,且第二条记录的持续时间长,所以选择第二条记录.注:可以有多条记录时间交叉。
比如说2006-12-03 20:50:30(开始时间) 20:51:55(结束时间)
和2006-12-03 20:51:05 20:53:30时间有交叉,且第二条记录的持续时间长,所以选择第二条记录.注:可以有多条记录时间交叉。
解决方案 »
- 在使用C#调用COM组件操作Excel的时候,如何锁住这个Excel不被其他人使用
- C#实现ftp下载的问题?请大哥指教
- c# Winform: 开发类似msdn式界面
- C#中如何使用SQLDMO?
- 已经知道网页的地址,如何读取网页的代码,并存放在本地?
- C#中如何在DataSet中增加一个DataTable????
- 出现“您无权查看该网页”的郁闷问题,HTTP 错误 403 - 禁止访问
- ~~如何用Dropdownlist控件对DataGird进行数据筛选?也就是重新有条件加载DataGrid~~
- PC机离线地图开发?有什么思路吗?
- 求教一个低级问题!
- 问一个修改文件名的问题
- 局域网密码登录下载文件求解决方案,急。。。
先用一个变量(a)指向第一条记录,另一个变量依次(b)往下, 判断当前记录是否和下一条有交叉,如果有,判断持续时间,将长的记录赋给变量(i),直到b不和a有交叉了.a++,b=a+1,循环,直到文件完,即可知道i中就是要找的那一条.
问题是这N条记录并不是一定按升序或降序排列的。
PS:题目是有N个文件,每个文件中有一条记录。当然你要把它看成是一个文件中有N条记录也行,但是就要注意它们不是按序排列的
{
DateTime stime1=Convert.ToDateTime(starttime1);
DateTime etime1=stime1.AddSeconds(Convert.ToDouble(startlong1.Trim())); DateTime stime2=Convert.ToDateTime(starttime2.Trim());
DateTime etime2=stime2.AddSeconds(Convert.ToDouble(startlong2.Trim())); if(stime1.CompareTo(etime2)<=0 && stime2.CompareTo(etime1)<=0)
{
return true;
}
return false;
}