找点
来源:互联网 发布:sql server 2008r2语句 编辑:程序博客网 时间:2024/04/29 12:26
描述
上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?
输入
多组测试数据。
每组数据先输入一个N,表示有N个闭区间(N≤100)。
接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。
输出
输出一个整数,表示最少需要找几个点。
样例输入
4
1 5
2 4
1 4
2 3
3
1 2
3 4
5 6
1
2 2
样例输出
1
3
1
1、先左排升序,再右排升序
#include <stdio.h>
#include <algorithm>
using namespace std;
typedef struct N{
inta,b;
}Data[100];
bool cmp(N x,N y)
{
if(x.a!=y.a)
return x.a<y.a;//升序
return x.b<y.b;//升序
}
Data data;
int main()
{
int n,i,j,t,k,m;
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%d %d",&data[i].a,&data[i].b);
sort(data,data+n,cmp);
m=1;
for(i=n-1,j=n-1-1;j>=0;)//逆序
{
if(data[j].b<data[i].a)
{
i=j;
m++;
}
j--;
}
printf("%d\n",m);
}
return 0;
}
2、先右排升序,再左排降序
#include<stdio.h>
#include<stdlib.h>
struct node{
intx;
inty;
};
struct node a[100];
int cmp(const void *a,const void *b)
{
struct node *c=(node *)a;
struct node *d=(node *)b;
if(c->y!=d->y) return c->y-d->y;//从小大大排
else return d->x-c->x;//从大到小排
}
int main(){
intn,i,j,temp;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i<n;i++)
printf("%d%d\n",a[i].x,a[i].y);
temp=a[0].y;
int count=1;
for(i=1;i<n;i++)//正序
{
if(a[i].x>temp){
count++;
temp=a[i].y;
}
}
//printf("%d\n",count);
}
return 0;
}
- 找点
- 找点
- 找点
- 找点
- 找点
- 找点
- 找点
- 找点
- 找点
- nyoj 891 找点 【区间找点】
- 找点乐子
- POJ3632 找停车点
- nyoj-891-找点
- NYOJ - 找点【贪心】
- NYOJ 891 找点
- NYOJ891 找点
- NYOJ-891-找点
- NYOJ--找点
- 建立Linux开发环境
- 十六进制转化为十进制 c语言函数
- BT17破解软件
- WSAStartup与WSACleanup
- 关于VC++ Release编译之后warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF
- 找点
- 编程能力与编程年龄
- Linux设备驱动模型
- WebService 概念入门
- 构建Linux 0.1(BeagleBone Black)
- Android访问服务器地址是10.0.2.2的原因
- Android学习之学习路线图
- 今日有感-对研究问题范围的限定与算法效果的关系
- user ... lacks CREATE SESSION privilege:logon denied