解题思路:

1、使用数组模拟树

2、有树的位置为1,移除树的位置为0

3、统计最后为 1 的位置的数目,即为最后剩余树的数目

注意事项:

参考代码:

#include<iostream>
using namespace std;

class Tree
{
public:
        //定义树
	int *tree;
	//树的个数
	int L;
	//构造函数初始化树对象
	Tree(int num)
	{
		tree = new int [num+1];
		L = num+1;
	}
	//析构函数清内存
	~Tree()
	{
		delete [] tree;
	}
};

//初始化树为 1
void setTreeOne(Tree *T)
{
	int i = 0;
	for(i = 0; i < T->L; i++)
		T->tree[i] = 1;
}

//把要移除的树设为 0
void setTreeZero(Tree *T, int ns, int ne)
{
	int i = 0;
	for(i = ns; i <= ne; i++)
		T->tree[i] = 0;
}

//获取剩余树的个数
int getTreeNum(Tree *T)
{
	int sum=0, i;
	for(i = 0; i < T->L; i++)
	{
		if(T->tree[i] == 1)
			sum+=1;
	}
	return sum;
}

int main()
{
	int L, M;
	int ns, ne;
	cin>>L>>M;
	Tree T(L);
	setTreeOne(&T);
	while(M)
	{
		cin>>ns>>ne;
		setTreeZero(&T, ns, ne);
		M--;
	}
	cout<<getTreeNum(&T)<<endl;
	return 0;
}


点赞(0)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论