Red de conocimiento informático - Problemas con los teléfonos móviles - ensamblaje del gen zoj1076, toda la mañana, siempre WA, pidiendo consejo.

ensamblaje del gen zoj1076, toda la mañana, siempre WA, pidiendo consejo.

Resumen de la pregunta

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

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;

}