【数学】从上往下看,打印数轴上看到的颜色
来源:互联网 发布:淘宝图片图片怎么处理 编辑:程序博客网 时间:2024/04/28 22:38
题目:EPI
//把Endpoint和LineSegment分开,是为了点的排序class LineSegment{public:int left, right;int height;int color;LineSegment(int l, int r, int c, int h):left(l), right(r), color(c), height(h){}const bool operator<(const LineSegment &a)const{return height < a.height;}};class Endpoint{public:bool Isleft;//之所以把L设为const,是为了 E.emplace_back(true, &A[i]); 这行代码能编译通过//&A[i]是const LineSegment*const LineSegment* L;Endpoint(bool isleft, const LineSegment* line) :Isleft(isleft), L(line){}const bool operator<(const Endpoint &a)const{return val() < a.val();}const int val()const{if (Isleft)return L->left;elsereturn L->right;}};void print_color_from_above(const vector<LineSegment> &A){if (A.empty())return;vector<Endpoint> E;for (int i = 0; i < A.size(); i++){E.emplace_back(true, &A[i]);E.emplace_back(false, &A[i]);}sort(E.begin(), E.end());int prev_xaxis;shared_ptr<LineSegment> prev = nullptr;//注意T的第二个参数必须有constmap<int,const LineSegment*> T;//第一个参数int是高度height,按照height从低到高排序for (int i = 0; i < E.size(); i++){Endpoint e =E[i];if (!T.empty() && prev_xaxis != e.val())//Endpoint在x轴上有可能相等{if (prev == nullptr)//第一个LineSegmentprev = shared_ptr<LineSegment>(new LineSegment(prev_xaxis, e.val(), T.crbegin()->second->color, T.crbegin()->second->height));else{//T.crbegin()是T中高度最高的那条直线,crbegin()相当于 (end()-1),即倒数第一个记录if (prev->color == T.crbegin()->second->color && prev->height == T.crbegin()->second->height)prev->right = e.val();else{//打印cout << "[" << prev->left << "," << prev->right << "]" << ",color=" << prev->color << ",height=" << prev->height << endl;//更新prev*prev = LineSegment(prev_xaxis, e.val(), T.crbegin()->second->color, T.crbegin()->second->height);}}}prev_xaxis = e.val();if (e.Isleft)T.emplace(e.L->height, e.L);elseT.erase(e.L->height);}if (prev)cout << "[" << prev->left << "," << prev->right << "]" << ",color=" << prev->color << ",height=" << prev->height << endl;}
0 0
- 【数学】从上往下看,打印数轴上看到的颜色
- 从上往下打印出二叉树的每个结点
- 网页背景颜色,从上往下渐渐变淡~
- 从上往下打印树节点
- 从上往下打印二叉树
- 从上往下分层打印二叉树
- Q23:从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 相遇
- SpringMVC常用注解實例詳解2:@ModelAttribute GOOD
- Jaxb中的注解关键字说明
- spring cvc-complex-type.2.4.a: Invalid content was found starting 错误
- linux /proc目录功能
- 【数学】从上往下看,打印数轴上看到的颜色
- java.lang.NoClassDefFoundError: Could not initialize java.util.Currency
- iSlider 移动端 Webapp 滑动的最优解决方案
- hdu 1142 A Walk Through the Forest (Dijkstra + 记忆化搜索)
- SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable
- EasyUI 之 DataGrid分页组件中文显示的两种方法
- 2015-01-20 崩溃
- test
- Top命令使用