核心思想:用数组标记树是否被移走,最后统计未被标记的树。

关键点:

tree[i] = false 表示树还在。

tree[i] = true 表示树被移走。

最后数 false 的数量就是剩下的树。

#include<iostream>  // 导入输入输出库,让电脑能读数字和打印结果
using namespace std; // 使用标准命名空间(固定写法,先不用管)

int l, m;       // l表示马路的长度(树的数量是 l+1 棵),m表示要移走树的区域数量
int i, j;       // 循环用的变量(像数数时的计数器)
int a, b;       // 表示每个区域的起点a和终点b
int count = 0;  // 用来计数剩下的树的数量

int main() {    // 主函数,程序从这里开始运行
    // 第一步:输入马路长度l和区域数量m
    cin >> l >> m;

    // 第二步:初始化树的数组(false表示树还在,true表示被移走)
    bool tree[10001] = {false}; // 假设马路最多有10000棵树,初始状态都是“还在”

    // 第三步:处理每个区域,标记被移走的树
    for (i = 0; i < m; i++) {   // 循环m次,处理每个区域
        cin >> a >> b;          // 输入当前区域的起点a和终点b
        for (j = a; j <= b; j++) {  // 从a到b,循环处理每一棵树
            tree[j] = true;     // 标记这棵树被移走了(true表示被移走)
        }
    }

    // 第四步:数一数还剩下多少棵树(没有被标记为true的树)
    for (i = 0; i <= l; i++) {  // 从0到l,检查每一棵树
        if (!tree[i]) {         // 如果tree[i]是false(树还在)
            count++;            // 计数器+1
        }
    }

    // 第五步:输出剩下的树的数量
    cout << count << endl;

    return 0;  // 程序结束
}

0 条评论

目前还没有评论...