您的位置:首页 > 其它

【hdu2037】今年暑假不AC——贪心算法

2016-02-12 19:02 176 查看
毕竟是第一次用c++写题还是写篇blog记录一下。

题目在这里:点击打开链接

由于输入是乱序的,而一个节目固定有开始和结束时间,所以声明一个结构体,然后对结束时间排序,之后如果第i+1个的开始时间不小于第i个的结束时间,我们就能完整的看第i个节目,如果小于,那么就和第i+2个去比,以此类推。

题目很简单,接下来说说c++的事情。

首先最前面三行是新的信仰,cin直接给变量名就可以了不用记各种各样的占位符,但注意cin不接受常量,如果是字符的话需要声明变量用变量去做。

algorithm里面有各种各样的函数特别方便,可以不用手写快排惹,还有min max map什么的

注意sort用的时候,如果针对的不是命名空间内的变量类型,比如自己声明了一个结构体,那么就需要给他一个比较函数cmp来说明排序时参考的关键字。

#include <iostream>
#include <algorithm>
using namespace std;

struct show
{
int start;
int end;
};

bool cmp(show a, show b)
{
return a.end < b.end;
}

int main()
{
int N = 0, count = 0, i = 0, temp = 0;
show* show1;

while (cin >> N, N)
{
count = 1;
show1 = (show*)malloc(sizeof(show)*N);

for (i = 0; i < N; i++)
cin >> show1[i].start >> show1[i].end;
sort(show1, show1 + N, cmp);

temp = show1[0].end;
for (i = 1; i < N; i++)
{
if (show1[i].start >= temp)
{
count++;
temp = show1[i].end;
}
}
cout << count << endl;

free(show1);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: