这题目是一道简单的贪心,,
发现了一点贪心的规律,
贪心,故名思议,那就是一定要当前选择的就是最优的,是动态规划的一种,,这种解决方法就类似于,
现实生活中,解决问题的方法一样,
第一,你一定要清晰的知道,自己解决的问题,
第二,你要能够清晰的分清状况,能够将问题步步分解
第三.检查自己是不是漏掉了什么情况
简单,
贴出代码:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int maxn = 1111;
int n;
int a[maxn];
struct node{
int x;
int y;
int num;
}q[maxn];
bool cmp(const node &a, const node &b)
{
return a.y < b.y;
}
int main()
{
while (scanf("%d", &n) != EOF)
{
for (int i = 0; i < n; i++)
{
scanf("%d%d", &q[i].x, &q[i].y);
q[i].num = i + 1;
}
sort(q, q + n, cmp);
int cnt = 0;
int flag_x = q[0].x;
int flag_y = q[0].y;
int i = 1;
a[cnt++] = q[0].num;
int a[maxn];
while (i < n)
{
if (flag_y < q[i].x)
{
a[cnt++] = i;
flag_x = q[i].x;
flag_y = q[i].y;
}
i++;
}
for (int i = 0; i < cnt; i++)
{
printf("Num : %d --- x = %d --- y = %d\n", i + 1, q[a[i]].x, q[a[i]].y);
}
}
system("pause");
return 0;
}