解题思路:

                利用一维数组与数轴相似的特点进行操作,化实际为抽象
注意事项:
                1、注意审题,是从0到L,所以最多有10001颗树。

                2、给你的L是路的长度,但根据实际情况一共会有n+1颗树。

                3、这种数组操作不用考虑重合情况,因为里面不是1(表示有树)就是0(表示没有树)。

                4、嗯。。。一开始我忘了按输入分配数组大小,所以这个程序还是可以优化的。


                我因为没有注意到1,2点耗了很多时间,希望你们别步我后尘

参考代码:

#include <stdio.h>
#include <stdlib.h>
#define MAX 10001

int main()
{
    int n,x,z,y,all[MAX],p=0,b,temp;/*x为组,n为路长*/
    scanf("%d %d",&n,&x);
    for (b=0;b<MAX;b++)
    all[b]=0;
    for (b=0;b<n+1;b++)
        all[b]=1;
    while (x--)
    {
        scanf("%d %d",&z,&y);
        for (;z<=y;z++)
            all[z]=0;
    }
    for (b=0;b<MAX;b++)
    {
        if (all[b]==1)
            p++;
    }
        printf("%d\n",p);
    return 0;
}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

扣脚的菜鸟 3年前 回复TA
@扣脚的菜鸟 #include<stdio.h>  int main() { 	int l,m,max,min; 	scanf("%d%d",&l,&m); 	int i,j,a[l+1],c,d,sum=0; 	 	for(i=0;i<l+1;i++) 	{ 		a[i]=1; 	} 	 	for(i=0;i<m;i++) 	{ 		scanf("%d%d",&c,&d); 		max=c>d?c:d; 		min=c<d?c:d; 		for(j=min;j<max+1;j++) 		{ 			a[j]=0; 		} 	} 	 	for(i=0;i<l+1;i++) 	{ 		sum=sum+a[i]; 	} 	printf("%d",sum);  }
扣脚的菜鸟 3年前 回复TA
我就说哪里不对