题目总不让人省心,大致有两种,一种是题目很好懂,程序不好写;另一种是题目不好懂,程序很好写。。。
题简单了就会在语言上麻烦你。。。
回顾qsort用法,第一个参数为数组名,第二个参数为元素个数,第三个为sizeof ( 数组类型),第四个为cmp函数。
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int beg;
int end;
int x;
}NODE;
NODE a[1005];
int b[1005];
int cmp(const void *a,const void *b)
{
return ((NODE*)a)->end > ((NODE*)b)->end ? 1 : -1;
}
int main()
{
int n,i,j,k,begin,ends;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].beg,&a[i].end);
a[i].x=i+1;
}
qsort(a,n,sizeof(NODE),cmp);
k=0;
b[k++]=a[0].x;
ends=a[0].end;
for(i=1;i<n;i++)
if(a[i].beg>=ends)
{
b[k++]=a[i].x;
ends=a[i].end;
}
for(i=0;i<k-1;i++)
printf("%d ",b[i]);
printf("%d\n",b[i]);
}
return 0;
}