原题链接:校门外的树
解题思路:
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分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复