先写上代码,用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].画数轴看看就明白了。
本文介绍了一种使用Java实现的区间统计算法,通过输入路线长度和多个区间范围,统计未被覆盖的区间长度。首先初始化一个与路线等长的数组,并将所有元素设为1,之后根据输入的区间将对应元素设为0,最后统计剩余为1的元素数量。
1136

被折叠的 条评论
为什么被折叠?



