请问大佬这道题怎么思考,怎么用Python解决?
学校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置,数轴上的每个整数点(即O,1,2,......,L)都有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任意区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。请计算将这些树都移走后,马路上还有多少棵树。输入:
第一行有两个正整数L(1<L<10000)和M(1<M<100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行,每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
输出:
一行一个整数,表示马路上剩余的树的数目。
看不懂,关键是要给出至少 1 个样例以帮助理解问题。 jackz007 发表于 2022-7-14 17:21
看不懂,关键是要给出至少 1 个样例以帮助理解问题。
样例输入
500 3
150 300
100 200
470 471
样例输出
298 亻灰呆 发表于 2022-7-14 17:25
样例输入
500 3
150 300
#include <stdio.h>
int main(void)
{
int a , d , e , i , j , k , l , m ;
scanf("%d%d" , & l , & m) ;
for(i = 0 ; i < l + 1 ; i ++) e = 1 ;
for(i = 0 ; i < m ; i ++) {
scanf("%d%d" , & a , & d) ;
if(d >= a) for(j = a ; j <= d ; j ++) if(j >= 0 && j <= l) e = 0 ;
}
for(i = k = 0 ; i < l + 1 ; i ++) if(e) k ++ ;
printf("%d\n" , k) ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
500 3
150 300
100 200
470 471
298
D:\\C> L, M = input().split()
data = set()
for _ in range(int(M)):
start, end = input().split()
data |= set(range(int(start), int(end)+1))
print(len(set(range(int(L)+1)))-len(data)) 本帖最后由 jackz007 于 2022-7-15 00:15 编辑
【代码1】:
l , m = map(int , input() . strip() . split())
e =
for i in range(m):
a , d = map(int , input() . strip() . split())
for j in range(a , d + 1):
if j >= 0 and j <= l:
e = 0
print(sum(e))
【代码2】:
l , m = map(int , input() . strip() . split())
e =
for i in range(m):
a , d = map(int , input() . strip() . split())
for j in range(a , d + 1):
if j in e:
e . remove(j)
print(len(e))
页:
[1]