
某校大门外长度为 L的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L的位置;数轴上的每个整数点,即 0,1,2,3,4…L都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
先说一下做题的思路。
这道题是要算出挖了之后剩余的树的个数,所以先开一个数组表示符合这道题的最大数组也就是一万,因为是0到10000所以数组应写为10001。利用数组的特性,如果未初始化系统会自动初始化为0,那就初始化一个为0则剩余部分自动初始为0了,这样就是一个天然的计数器了,将挖了的地方赋值为1,然后最后循环一次有多少个0就是有多少个树。这是思路,具体代码如下。
#include< iostream>
using namespace std;
int main()
{
int top,num,tempa,tempb,sum=0;
//top为路长,num为挖树区域数目,tempa为挖树一端开头,tempb为结尾,sum为计数器
int tree[10001]={0};//开数组为10001表示0到10000
cin>>top>>num;
for(int i=1;i<=num;i++) //循环几次区域长度次数
{
cin>>tempa>>tempb; //输入区域开头结尾
for(int j=tempa;j<=tempb;j++)
{
tress[j]=1; //将区域内的赋值为1
}
}
for( i=0;i<=top;i++) //循环判断输入路上数组上依旧为0的数,而不是循环整个数组
{
if(tress[i]==0) sum++; //是0计数器加1
}
cout<
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)