先写上代码,用java写的:
import java.util.*;
import java.io.*;
public class Main {
public static void main(String []args)throws Exception{
Scanner input=new Scanner(System.in);
int l=0,m=0,c,b,s=0;
l=input.nextInt();
m=input.nextInt();
int a[]=new int [l+1];
for(int i=0;i<a.length;i++){
a[i]=1;
}
while(m>0){
b=input.nextInt();
c=input.nextInt();
for(int i=b;i<=c;i++){
a[i]=0;
}
m--;
}
for(int i=0;i<a.length;i++){
if(a[i]==1){
s++;
}
}
System.out.println(s);
}
}
具体思路是,先输入路线长度L,将他定义成一个数组的长度,即 l=input.nextInt(); int a[]=new int [l+1];
将数组每个都赋值成数字1.然后接受输入的区间长度,对应区间的起点和终点把中间的数组元素赋值成数字0。
最后统计数组中1的个数。
注意:1.数组长度是l+1.
2.若输入的区间是 100,200.那么对应数组的起止位置是a[100]和a[200].画数轴看看就明白了。