题目:校门外的树
代码实现
以下代码中的注释包含做题过程中遇到的问题:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int>v;//利用c++的vector库创建动态数组
int L,M;//定义左右端点
cin>>L>>M;
//设置动态数组大小,由于开数组初始化的特点(右端点不会算入),所以开L+1个。
v.resize(L+1);
//循环M次操作,无所谓有没有重复区间,拔过树的地方再拔也是没有;
while(M){
int be,en;//定义修路起始区间
cin>>be>>en;
for(int i=be;i<=en;i++){
v[i]=1;//给原本都是0的数组赋1模拟拔树操作
}
/*这里本来想用以下代码即vector的遍历来模拟拔树操作
但是v.begin()方法似乎不能赋初值
或者是我还未掌握vector遍历的正确用法
vector遍历代码模板如下:
代码参考来源”https://blog.csdn.net/u013288190/article/details/120686563“
'''这是原来的错误代码
while(M){
int b,e;
cin>>b>>e;
auto it=v.begin(b);//v.begin()方法不能加参数
//虽然是auto类型但是其实it的类型是指针;
while(it != v.end())
{
v[it]=1;//1为拔掉了树
it++;
}
'''
M--;
}*/
M--;
}
//这里利用algorithm库的count方法来统计所有0元素的个数(即剩余树的数量)
//参考来源"https://blog.csdn.net/yinjianxiang/article/details/76114505"
int nCount =count(v.begin(), v.end(),0);
/*这里本来是想用v.size()方法来统计0的个数,但是v.size()方法无参数,所以不能直接用来统计0元素的个数。
v.szie()的正确用法为"返回 v 中所有元素的个数"
参考来源"https://blog.csdn.net/Flag_ing/article/details/123380655"*/
cout<<nCount;
return 0;
}
学习总结:
1.掌握了如何使用Vector开动态数组
2.学会了Vector.size()方法的正确用法
3.掌握了Vector的一般遍历方法
4.掌握了C++<algorithm>库中count()方法
第一次写blog还有很多地方需要改进,请各位大佬多多指点。