贪心算法1004
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心算法1004相关的知识,希望对你有一定的参考价值。
题目描述:
每一个节目都有结束时间和开始时间,安排最佳时间能够观看最多的节目。
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
解题思路:
典型的贪心算法,首先以每个节目的结束时间排序,再用贪心算法寻找局部最优解,即节目时间不冲突,最后再计算能观看的节目数。
代码:
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 struct T 6 { 7 int a; 8 int b; 9 }s[101]; 10 bool cmp(const T&m, const T&n) 11 { 12 if(m.b<=n.b) 13 return true; 14 return false; 15 } 16 void Greedy(int n,T s[]) 17 {int sum=1; 18 for(int i=0;i<n-1;i++) 19 { 20 if(s[i+1].a>=s[i].b) 21 sum++; 22 } 23 cout<<sum<<endl; 24 } 25 26 int main() 27 { 28 int n,N; 29 cin>>N; 30 while(N!=0) 31 { 32 cin>>n; 33 for(int i=0;i<n;i++) 34 { 35 cin>>s[i].a>>s[i].b; 36 }sort(s,s+n,cmp); 37 Greedy(n,s); 38 } 39 return 0; 40 }
以上是关于贪心算法1004的主要内容,如果未能解决你的问题,请参考以下文章