杭电oj 2037 今年暑假不AC
Tips:贪心算法的典型应用,可以按照节目结束时间由小到大排序,(至于结束时间相同的,有些人说按开始时间早的排序,不过个人认为不必处理,因为结束时间一样,两个之中要么都没有,要么必有一个)然后再依次进行判断看是否能加入到结果集中。
1 /**贪心算法,按节目结束时间排序*/ 2 #include<iostream> 3 using namespace std; 4 int main() 5 { 6 int n; 7 while(cin>>n && n!=0) 8 { 9 int ts[101],te[101],t; 10 int count = 0; 11 //输入数据 12 for (int i = 0;i < n;i++) 13 { 14 cin>>ts[i]; 15 cin>>te[i]; 16 } 17 //排序 18 for(int i = 0;i<n;i++) 19 { 20 for(int j=i;j<n-1;j++) 21 { 22 if(te[i]>te[j+1]) 23 { 24 t=te[i];te[i]=te[j+1];te[j+1]=t; 25 t=ts[i];ts[i]=ts[j+1];ts[j+1]=t; 26 } 27 } 28 } 29 //添加数据 30 count = 1; 31 int k = te[0]; 32 for( int i=1;i<n;i++) 33 { 34 if(k <= ts[i]) 35 { 36 k = te[i]; 37 count++; 38 } 39 } 40 cout<<count<<endl; 41 } 42 return 0; 43 }