ZOJ 1076 Gene Assembly

可以用动态规划做,但是简单的贪心就足够了。按照结束的位置排序,然后选择最长的。

#include<iostream>
#include<algorithm>
using namespace std;
struct exon
{
	int begin,end;
	int index;
};
int cmp(exon a,exon b)
{
	return a.end<b.end;
}
int main()
{
	int n,i;
	exon e[1001];
	while(cin>>n&&n!=0)
	{
		for(i=0;i<n;i++)
		{
			cin>>e[i].begin>>e[i].end;
			e[i].index=i+1;
		}
		sort(e,e+n,cmp);
		int x=e[0].end;
		cout<<e[0].index;
		for(i=1;i<n;i++)
		{
			if(e[i].begin>=x)
			{
				cout<<' '<<e[i].index;
				x=e[i].end;
			}
		}
		cout<<endl;
	}
	return 0;
}
posted @ 2011-04-18 15:06  watana  阅读(191)  评论(0编辑  收藏  举报