题目描述
算法设计+题目分析
分析题目:
1、按照时间段起点和时间段终点,读入小H和小W的时间;
2、找到这些时间的重叠部分,并相加。
注意点+记录点
无
代码(100分)
环境
Visual C++6.0
#include <iostream>
using namespace std;
#define N 2000
struct time{
double beg;//时间段起点
double end;//时间段终点
};
int max(int a, int b){
if (a>=b) return a;
else return b;
}
int min(int a, int b){
if (a<=b) return a;
else return b;
}
int main()
{
int n;
cin>>n;
struct time H_time[2001];//小H的时间
struct time W_time[2001];//小W的时间
for (int ii=0; ii<n; ii++) cin>>H_time[ii].beg>>H_time[ii].end;
for (int iii=0; iii<n; iii++) cin>>W_time[iii].beg>>W_time[iii].end;
int t=0;
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
if(H_time[i].beg<=W_time[j].end&&H_time[i].end>=W_time[j].beg)//判断有无重叠区间
t+=min(H_time[i].end,W_time[j].end)-max(W_time[j].beg,H_time[i].beg);//重叠区间大小
}
}
cout<<t;
return 0;
}
感谢链接
无