ensamblaje del gen zoj1076, toda la mañana, siempre WA, pidiendo consejo.
Primero aprenda una palabra biológica: exón: exón, un segmento de la secuencia de ADN que se puede traducir y expresar. Dados los puntos inicial y final de muchos exones, encuentre la cadena que contiene la mayor cantidad de exones y genere el número de estos exones.
Solución
Primero, ordene todos los exones por sus puntos iniciales. Si los puntos iniciales son los mismos, verifique las posiciones finales. Luego busque uno por uno. Si el final del exón actual está después del siguiente exón, omita el exón actual; de lo contrario, genere el número del exón actual. Aquí se utilizan vectores para almacenar exones. Escribimos un fragmento de código para determinar el tamaño del exón, que se requiere como condición para la función sort().
Código fuente de CA
#include
#include
#include
#include
usando el espacio de nombres std;
struct Exon{
int st,ed,index;
}t;
int lessthan(Exon a,Exon b)
{/esta función es necesaria.
if(a.st else if(a.st==b.st&&a.ed else if(a.st==b.st&&a.ed de lo contrario devuelve 0; } int main() { int i,n; vector while(cin>>n&&n) { int flag[1000 ]={0},j=0; memset(flag,0,sizeof(flag)); while(!exon.empty()) exón. pop_back();//¡¡¡recuerda vaciar el vector!!!! for(i=0;i cin>>t.st> >t.ed; t.index=i+1; exon.push_back(t); } ordenar (exon .begin(),exon.end(),menos que); int tail=-1; for(i=0;i if(exón[i].st>=tail&&exon[i].ed<. exón[i+1].ed){ bandera[j++]=exón[i ].index; tail=exon[i].ed; } de lo contrario continuar; } if(exón[n-1].st> =cola) bandera[j]=exón[n-1].index; cout< for(i=1;i<=j;i++) cout<<' '< cout < } devuelve 0; }