因为种树的地方可能会产生重叠。如何解决重叠的问题:
1.将每个种树的范围进行比较,大范围的替换小的范围;
2.先建立一个大小为l+1的数组,将这个数组全置为0,将要种树的地方置为1,剩下是0的地方就是要修路的地方。
方法一:暴力解:
头文件:
#include <iostream>
#include <vector>
#include <algorithm>
建立比较函数:因为种树的地方是一个范围,所以建立有一对数据的数组,并且按照第一个数的大小从大到小排序
如果左边的大于上一个右边的,那么可以直接算出上一组数据有多少棵树,因为后面的数据都是比前一个大的,然后更换成更大的数组再和下一个数组比较。
如果左边的小于右边的,就比较两个数组的右边。
方法二:建立数组标记种树位置
头文件:
#include <iostream>
#include <vector>
输入马路长度、区域个数。建立大小l+1且全为0的数组
将要种树的地方标记成1,注意两个循环不可以拆开。
最后计算没有被标记上1的数组,求得结果。