H2330819074


私信TA

用户名:dotcpp0692243

访问量:970

签 名:

大鹏一日同风起,扶摇直上九万里

等  级
排  名 511
经  验 4399
参赛次数 1
文章发表 17
年  龄 19
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

解题思路:
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分

4 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

把它初始的树设为1感觉更简单(点烟思考.jpg)
2023-12-01 00:36:08
  • «
  • 1
  • »