Red de conocimiento informático - Conocimiento informático - Programación dinámica del programa C del problema de interceptación de misiles

Programación dinámica del programa C del problema de interceptación de misiles

Escribí uno para ti, pero la secuencia resultante puede no ser única, ¡pero te garantizamos que será correcta! La complejidad del tiempo es O(n^2). No puedo hacer el n*logn que mencionaste en este momento. ¡Te lo diré después de hacerlo!

#includelt;iostreamgt;

usando el espacio de nombres std;

int main()

{

int i, j, n, x[100], d[100]; //x[] representa la altura de cada misil, d[i] se registra como el i-ésimo misil después de ser interceptado.

//Este El número máximo de misiles que el sistema puede interceptar (incluido el i-ésimo misil interceptado).

int dmax=0, xh=0; //Registra el número máximo de intercepciones y el primer número de secuencia interceptado

cingt; //Ingresa el número de intercepciones; Número de misiles

for(i=0;ilt;n;i)

{

cingt;gt;x[i] //Ingresa cada uno Altura del misil

d[i]=1; //Los valores iniciales se establecen en 1

}

for(i=n-2; igt ; =0; i--) //Algoritmo de programación dinámica, implementación recursiva, bucle de atrás hacia adelante

{

for(j=i 1;jlt;n;j)

if((x[j]lt; x[i])amp; amp; (d[i]lt; d[j] 1)) //Condición de juicio

{

d[i]=d[j] 1;

}

}

for(i=0; ilt; n ;i) //Encontrar el número máximo

{

if(d[i]gt;dmax)

{

dmax=d[i];

xh=i; //El número de serie del primer misil interceptado

}

}

coutlt;lt;d[xh]lt;lt;endl;

coutlt;lt;x[xh]lt;lt;",";

for(j=xh 1;jlt;n;j) // Genera los números de serie descendentes que cumplen las condiciones en secuencia

if((x[j]lt;=x[xh])amp;amp;(d[ xh]== d[j] 1)) //Condición de juicio

{

coutlt;lt;x[j]lt;lt;",";

xh =j;

}

devuelve 0;

}