这题思路可以说是太简单了。
用一个数组表示树,值为1表示有树,值为零表示无就行。、
最后统计1的个数即为剩下的树。
#include <stdio.h>
#include <malloc.h>
void move (int A[],int head,int tail){
for( ; head <= tail ; head++ ){
A[head]= 0 ;
}
}
int main( ){
int l = 0, m = 0 ;
while( scanf("%d %d",&l,&m) != EOF ){
int* A=(int*)malloc( sizeof(int) * (l+1) ) ;
for(int i = 0 ; i <= l ; i++ ){
A[i] = 1 ;
}
while(m>0){
int head = 0, tail = 0;
scanf("%d %d",&head,&tail);
move(A,head,tail);
m--;
}
int sum = 0 ;
for(int i = 0 ; i <= l ; i++ ){
if(A[i]==1){
sum++;
}
}
printf("%d\n",sum);
}
return 0 ;
}
结果如下: