可见区间个数(c++ implementation)
//============================================================================// Name : Max_Visual_Blocks.cpp 求可见子区间的个数,类似某知名国有银行的考题 // Author : tricoffee // Version : // Copyright : Your copyright notice // Description : Max_Visual_Blocks in C++, Ansi-style //============================================================================ #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; struct Point{ int x; int y; int d; }; int cmp(Point a,Point b) { if(a.x==b.x) return a.y<b.y; else return a.x<b.x; } int main()
{
int n;
cin >> n;
if(n<=0) return -1;
Point a[n]; for(int i=0;i<n;++i){
int x = 0; int y = 0;
cin >> x >> y;
a[i].x = x; a[i].y = y;
}
sort(a,a+n,cmp);//点排序;
int cnt = 1;
for(int i=1;i<n;++i){
if(a[i].x>a[i-1].x){
if(a[i].y>a[i-1].y)
cnt += 1;
else cnt += 0;
}
else if(a[i].x==a[i-1].x) {
cnt += 0; }
else return -1;
}
cout << cnt << endl;
return 0; }# input: 5 (说明有n“对”表示“区间”的左,右边界的数据)# 以下n行,空格间隔(为了表达效果好,这里用逗号间隔)# 3,4# 2,6# 1,4# 8,10# 7,10# ans: 3 (说明最多有3个区间可见)
#笔试题目#