解题思路:
1.把这条道路上树的总数用一个数组装起来,把这个数组的每个元素都先定义为0;
2.确定地铁区域,用双循环,外循环确定有多少个铁路区域;内循环用来给铁路区域做处理,并让此区域中对应所有的数组元素加1。(我们不用管那些重叠的铁路区域,我们只需要知道非地铁区域对应的数组元素的数值一直都是0就行了,这点很重要。)
3.重头到尾开始统计整条道路树木的数量(整个数组的情况),用循环,定义t=0,一旦出现有元素等于0,我们就t=t+1。全部过一遍,我们就能知道有多少个等于0的元素了(也就是没被铁路区域盖住的树木数量)。
4.输出t,即剩余的树木。
注意事项:
1.由于数组arr的第最开始元素是arr【0】,所以从arr【0】到arr【z】一共有z+1个元素。
2.,同理,由于道路第0米也会有一颗树(如题所述),所以如果一条道路的长度为z,则这条道路一共有z+1棵树。
3.注意好循环中始末的数值!
参考代码:
#include
int main()
{
int j,i,q,s,z,t=0,n=0;
scanf("%d",&z); //道路的长度(有z+1棵树)
scanf("%d",&n); //输入n组地铁区域
int a[z]; //(有z+1个元素的数组)
for(i=0;i<=z;i++) //把所有数组元素赋值为0
{
a[i]=0;
}
for(i=1;i<=n;i++) //对地铁区域依次进行处理
{
scanf("%d%d",&q,&s); //每个地铁区域初,末位置
for(j=q;j<=s;j++)
{
a[j]+=1; //把区域里的数加上去,让它的数值不为0
}
}
for(i=0;i<=z;i++) //对整条道路进行统计
{
if(a[i]==0)
t++;
}
printf("%d",t);
return 0;
}
0.0分
3 人评分
Hello, world! (C语言代码)浏览:1180 |
奖学金 (C++代码)浏览:1987 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:504 |
C语言训练-求素数问题 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:954 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1184 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1317 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:593 |
关于float,double变量的几点说明浏览:1801 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:736 |