原题链接:校门外的树
解题思路:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复