输入
每个样例的第一行是一个整数K(K≤10000),表示线段的个数,如果K=0表示输入结束。以后的K行,每行为一个线段的左右端点x1,x2,(0 ≤ x1
< x2 ≤ 1,000,000,000)。
输出
每行输出一个样例的结果。
样例输入
2
1 2
2 3
3
1 3
0 2
5 6
0
样例输出
2
4
C语言编程题 在X轴上给你一些线段,问被这些线段覆盖的区间长。
答案:1 悬赏:60 手机版
解决时间 2021-02-21 11:11
- 提问者网友:龅牙恐龙妹
- 2021-02-21 07:42
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-02-21 08:37
#include
#include
#include
#define N 10000
typedef struct{
int head;
int nail;
} NODE;
NODE a[N];
int n;
int cmp(const void *a,const void *b){
return ((NODE*)a)->head - ((NODE*)b)->head;
}
int main ()
{
scanf("%d",&n);
while(n!=0){
int i;
for(i=0;i
scanf("%d%d",&a[i].head,&a[i].nail);
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i
while(a[i].nail>a[i+1].head){
if(a[i].nail>a[i+1].nail){
a[i+1].head = a[i].head,a[i+1].nail = a[i].nail;
//a[i].nail = a[i].head;
}else{
a[i+1].head = a[i].head;
}
a[i].nail = a[i].head;
i++;
}
}
int sum = 0;
for(i=0;i
printf("%d\n",sum);
scanf("%d",&n);
}
return 0;
}这样就可以了
#include
#include
#define N 10000
typedef struct{
int head;
int nail;
} NODE;
NODE a[N];
int n;
int cmp(const void *a,const void *b){
return ((NODE*)a)->head - ((NODE*)b)->head;
}
int main ()
{
scanf("%d",&n);
while(n!=0){
int i;
for(i=0;i
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i
if(a[i].nail>a[i+1].nail){
a[i+1].head = a[i].head,a[i+1].nail = a[i].nail;
//a[i].nail = a[i].head;
}else{
a[i+1].head = a[i].head;
}
a[i].nail = a[i].head;
i++;
}
}
int sum = 0;
for(i=0;i
scanf("%d",&n);
}
return 0;
}这样就可以了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯