线段覆盖

来源:互联网 发布:电影照片是什么软件 编辑:程序博客网 时间:2024/05/20 23:29

一条直线上有N条线段,已知他们的两个端点,完成代码,计算这些线段覆盖了多大的长度。如:

Segment:{{1,9},{5,10}},Sum=9;

Segment:{{1,3},{10,15}},Sum=7;

Segment:{{1,3},{2,5},{10,15}},Sum=9;

#include<iostream>using namespace std;struct Segment{int start;int end;};int Sum(int n,Segment* segments){if(n<1||segments==NULL)return 0;int length=0;if(n==1){length=segments[0].end-segments[0].start;return length;}int nowstart=0;int nowend=1;int begin=0;while(nowend<n){while(segments[nowstart].end>segments[nowend].start){nowstart++;nowend++;if(nowend==n){length+=segments[nowend-1].end-segments[begin].start;return length;}}length+=segments[nowend-1].end-segments[begin].start;begin=nowend;nowstart=nowend;nowend++;}length+=segments[nowend-1].end-segments[nowend-1].start;return length;}int main(){Segment arr[3]={{1,3},{2,5},{10,15}};int n=Sum(3,arr);system("pause");return 0;}


0 0
原创粉丝点击