157 求最大重叠区间大小

57、求最大重叠区间大小
题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠
区间的大小。对一个正整数  n  ,如果 n 在数据文件中某行的两个正整数(假设为 A 和 B)
之间,即 A<=n<=B 或 A>=n>=B  ,则  n  属于该行;
如果  n  同时属于行 i 和 j  ,则 i 和 j 有重叠区间;重叠区间的大小是同时属于行 i 和 j 的整
数个数。 
例如,行(10 20)和(12 25)的重叠区间为  [12 20]  ,其大小为 9,行(20 10)和(  20 30  )
的重叠区间大小为  1  。 

/*
57、求最大重叠区间大小
题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠
区间的大小。对一个正整数  n  ,如果 n 在数据文件中某行的两个正整数(假设为 A 和 B)
之间,即 A<=n<=B 或 A>=n>=B  ,则  n  属于该行;
如果  n  同时属于行 i 和 j  ,则 i 和 j 有重叠区间;重叠区间的大小是同时属于行 i 和 j 的整
数个数。 
例如,行(10 20)和(12 25)的重叠区间为  [12 20]  ,其大小为 9,行(20 10)和(  20 30  )
的重叠区间大小为1 。

是每2行的最大重叠区间,不是所有的 
做法: 
将输入的区间按起点从小到大排列,然后对每个区间判断从当前区间起点到目前的end的距离,
此距离即为覆盖距离,当覆盖距离大于最大的距离时则更新最大距离。
每次循环都要判断是否需要更新end,end表示目前所有区间的最大终点值。
*/

#include
#include
#include
using namespace std;
#define N 100

struct node{
	int l,r;
};
node map[N];

bool cmp(node a,node b)
{
	return a.lmaxLen)
			maxLen=len;
		if(map[i].r>end)//更新end 
			end=map[i].r;
	}
	return maxLen;
}

int main()					
{							 
	int n,i,a,b;
	while(1)
	{
		printf("请输入行数n(0结束)\n");
		scanf("%d",&n);
		if(n==0) break;
		for(i=0;i
157 求最大重叠区间大小_第1张图片

你可能感兴趣的:(面试杂七杂八,ACM,精选)