HDU 2037 今年暑假不AC (贪心)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2037
非常经典的活动安排问题变形, 与算法教材的活动安排一样,根据结束时间进行排序,然后相容的累加即可。
// 经典贪心问题 活动时间安排的简单变形 // 按活动结束时间,递增排序, 结束时间早的,优先选择 #include <bits/stdc++.h> using namespace std; typedef struct active { int st; int ed; bool operator < (const struct active &at) const { return this->ed < at.ed; } }Active; const int MAX = 100+5; Active arr[MAX]; int main(void) { //freopen("in.txt", "r", stdin); int n = 0; while(cin>>n && n != 0) { for(int i=0; i<n; ++i) scanf("%d%d", &arr[i].st, &arr[i].ed); sort(arr, arr+n); //cout<<arr[0].ed<<endl; int cnt = 1; int j = 0; for(int i=1; i<n; ++i) { // 如果没有冲突 if (arr[i].st >= arr[j].ed) { j = i; cnt++; } } printf("%d\n", cnt); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/core__code
时间: 2024-10-12 19:03:19