本文主要是介绍nyoj 1036非洲小孩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
区间选点问题。可能题目描述的不是太清楚。
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct M
{int star1,star2,end1,end2;
}c[105];
bool cmp(M x,M y)
{if(x.star1<y.star1) return true;if(x.star1==y.star1&&x.star2<y.star2) return true;return false;
}
int main()
{int n,sum,i,temp;while(scanf("%d",&n)!=EOF){memset(&c,0,sizeof(&c));for(i=0;i<n;i++){scanf("%d:%d-%d:%d",&c[i].star1,&c[i].star2,&c[i].end1,&c[i].end2);if(c[i].star1>c[i].end1||c[i].star1==c[i].end1&&c[i].star2>c[i].end2)temp=c[i].star1,c[i].star1=c[i].end1,c[i].end1=temp,temp=c[i].end2,c[i].end2=c[i].star2,c[i].star2=temp;//对时间后者小于前者的交换,小时和分钟都要交换}sort(c,c+n,cmp);sum=1;for(i=1;i<n;i++){if(c[i].star1>c[i-1].end1||c[i].star1==c[i-1].end1&&c[i].star2>c[i-1].end2)sum++;else{if(c[i].end1>c[i-1].end1)c[i].end1=c[i-1].end1,c[i].end2=c[i-1].end2;if(c[i].end1==c[i-1].end1&&c[i].end2>c[i-1].end2)c[i].end2=c[i-1].end2;}} printf("%d\n",sum);}return 0;
}
这篇关于nyoj 1036非洲小孩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!