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; }