编程之美2.19区间重合判断
来源:互联网 发布:iptv和网络电视哪个好 编辑:程序博客网 时间:2024/05/16 15:40
比较好的解题思路
http://blog.csdn.net/linyunzju/article/details/7737060
问题:
1. 给定一个源区间[x,y]和N个无序的目标区间[x1,y1] [x2,y2] ... [xn,yn],判断源区间[x,y]是不是在目标区间内。
2. 给定一个窗口区域和系统界面上的N个窗口,判断这个窗口区域是否被已有的窗口覆盖。
1. 解法:
先用区间的左边界值对目标区间进行排序O(nlogn),对排好序的区间进行合并O(n),对每次待查找的源区间,用二分查出其左右两边界点分别处于合并后的哪个源区间中O(logn),若属于同一个源区间则说明其在目标区间中,否则就说明不在。
自己的解法
#include <iostream>#include <vector>using namespace std;struct zone{int left;int right;};void sort(vector<zone>& vec){for(int i=vec.size()-1;i>=1;i--){for(int j=0;j<i;j++){if(vec[j].left>vec[j+1].left){int templeft = vec[j].left;vec[j].left = vec[j+1].left;vec[j+1].left = templeft;int tempright = vec[j].right;vec[j].right = vec[j+1].right;vec[j+1].right = tempright;}}}for(i=vec.size()-1;i>=1;i--){for(int j=0;j<i;j++){if((vec[j].left==vec[j+1].left)&&(vec[j].right>vec[j+1].right)){int temp = vec[j].right;vec[j].right = vec[j+1].right;vec[j+1].right = temp;}}}}void check(zone z,vector<zone> vec){vector<zone> area;sort(vec);for(int i=0;i<vec.size();i++){cout<<vec[i].left<<" "<<vec[i].right<<endl;}int start=vec[0].left,end=vec[0].right;zone newz = {start,end};for(i=1;i<vec.size();i++){if(vec[i].left<=end){end = vec[i].right;}else{newz.left = start;newz.right = end;area.push_back(newz);start = vec[i].left;end = vec[i].right;}}newz.left = start;newz.right = end;area.push_back(newz);for(i=0;i<area.size();i++){if(z.left>=area[i].left&&z.right<=area[i].right){cout<<z.left<<" "<<z.right<<"°üº¬ÔÚ"<<area[i].left<<" "<<area[i].right<<endl;break;}}}int main(){zone z = {3,7};zone z1 = {1,2};zone z2 = {3,6};zone z3 = {5,9};vector<zone> vec;vec.push_back(z2);vec.push_back(z1);vec.push_back(z3);check(z,vec);return 0;}
- 《编程之美》 2.19 区间重合判断
- 编程之美 2.19 区间重合判断
- 编程之美2.19区间重合判断
- 区间重合判断-编程之美2.19
- 编程之美 2.19 区间重合判断
- 编程之美-区间重合判断
- 【编程之美】区间重合判断
- 编程之美区间重合判断
- 【编程之美】区间重合判断
- 编程之美区间重合判断
- [编程之美]区间重合判断
- 编程之美 - 区间重合判断
- 读书笔记之编程之美 - 2.19 区间重合判断
- 编程之美——2.19 区间重合判断
- 区间重合判断(编程之美2.19)
- 编程之美读书笔记2.19—区间重合判断
- 编程之美2.19—区间重合判断
- 【编程之美】区间重合判断(线段树)
- poj2728Desert King(最优比率生成树)
- 最强烈推荐-我的java收藏夹(内有国内最好的java论坛)
- [摘抄]Oracle中各处的转义字符:单引号' 和 &符 和下划线_
- Hibernate 分页时 Long 无法转化成Integer类型 异常
- C++实验题---字符串排序
- 编程之美2.19区间重合判断
- 汉罗塔问题的递归实现
- Apache Hadoop NextGen MapReduce (YARN)
- Error connecting to the Service Control Manager
- 一只布谷鸟,两只火鸡,三匹赛马,移动竞赛的改变
- net.core.rmem_max net.core.wmem_max
- oracle脚本
- C++类型转换
- 支持不同屏幕尺寸——Supporting Different Screen Sizes