解题思路:
定义一个数组;数组下标代表数轴上的每个整数点即0,1,2,……,n(长度为500的公路有501颗树);
把这个数组初始化全为1(为1代表有树,0代表被移除);

输入移除区域(x,y),把这个区域上的树全置0;(有多个,用循环控制);

输出为1的树的数目;

注意事项:
数轴上的0点也有数;




参考代码:

#include<stdio.h>
void chushihua(int *a,int n);
void yichu(int *a,int x,int y);
void output(int *a,int n);
void function();
/*--------------------------------------------------*/
int main()
{
  function();
  return 0;
}
/*--------------------------------------------------*/
void function()
{
 int n,h;
 int x,y;
 int a[10001];
 while(scanf("%d%d",&n,&h)!=EOF)
 {
  chushihua(a,n);

  for(int i=0;i<h;i++)
   {scanf("%d%d",&x,&y);yichu(a,x,y);}
   output(a,n);
 }
return ;
}
/*--------------------------------------------------*/
void chushihua(int *a,int n)
{
 for(int i=0;i<=n;i++)
  a[i]=1;
  return ;
}
/*--------------------------------------------------*/
void yichu(int *a,int x,int y)
{
 for(int i=x;i<=y;i++)
  a[i]=0;
  return ;
}
/*--------------------------------------------------*/
void output(int *a,int n)
{
 int sum=0;
 for(int i=0;i<=n;i++)
  {if(a[i]==1)sum++;}

  printf("%d\n",sum);
  return ;
}


点赞(26)
 

0.0分

10 人评分

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

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

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

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

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

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

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

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

评论列表 共有 18 条评论

surmount 1年前 回复TA
赞赞赞
坚果 1年前 回复TA
@wudi 里层的循环和外层的循环都用了 i ,要改一下吧
阿玉 2年前 回复TA
#include<stdio.h>
int main()
{
	int L,m;
	int a[128][128];
	int b[L];
	scanf("%d%d",&L,&m);
	int i,j;
	for(i=0;i<m;i++)
	{
		scanf("%d%d",&a[i][0],&a[i][1]);

	} 
	for(i=0;i<m;i++)
	{
		for(j=a[i][0];j<=a[i][1];j++)
		{
			b[j]=1;
		 } 
	} 
	int count=0;
	for(i=0;i<=L;i++)
	{
		if(b[i]==1)
		count++;
	}
	printf("%d",L+1-count); 
    return 0;
}
jiangtian 2年前 回复TA
@wudi 我焯好强
睡觉睡觉睡觉 2年前 回复TA
@wudi 6
cc 2年前 回复TA
@wudi 牛逼
无心 3年前 回复TA
点赞!!
软件二班谭豪 3年前 回复TA
@wudi 6666666666666666666666666666666
阿轩请求出战 4年前 回复TA
@wudi 秒啊
wudi 4年前 回复TA
#include <stdio.h>

int main()
{
	int L,M;
	scanf("%d%d",&L,&M);
	int n=L+1,sum=0;
	int buf[n];
	for(int i=0;i<n;i++)
		buf[i]=0;
	for(int i=0;i<M;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		for(int i=a;i<=b;i++)
			buf[i]=1;	
	}
	for(int i=0;i<n;i++)
		if(buf[i]!=1) sum++;
	printf("%d\n",sum);
	return 0;
}