Red de conocimiento informático - Aprendizaje de código fuente - Crear un hermoso paradigma de programación en el campus

Crear un hermoso paradigma de programación en el campus

Pregunta de programación dinámica: marque a[i] como el árbol que arroja monedas de oro en el primer segundo. F[i, K, w] es el número total de monedas de oro obtenidas en 1 ~ i segundos cuando me paré debajo del árbol K y me quedaban W pasos para moverme.

Entonces f[i,k,w] = max{f[i-1,k,w],? f[i-1, 3-k, w-1]} +? (a[I]= = k); dos situaciones, un segundo bajo el mismo árbol y un segundo bajo otro árbol.

Condición inicial f[0,k,w] = 0 (para todo k=1 y w=1..w). El código simple es el siguiente

¿Para qué? (int?i?=?0;?i?<=?w;?i++)

f[0][0][i]? =?0;

¿Para qué? (int?i?=?0;?i?<=?w;?i++)

f[0][0][i]? =?-100000000;

¿Para qué? (int?t?=?1;?t?<=?t;?t++)

¿Para qué? (int?w?=?0;?w?<=?w;?w++)

¿Para qué? (int?k?=?0;?k?<=?1;?k++)

f[t][k][w]? =?max(f[t-1][k][w],?f[t-1][1-k][w-1])? +?(k?==?A[I]?-1);

int? res? =?0;

¿Para qué? (int?w?=?0;?w?<=?w;?w++)

¿Para qué? (int?k?=?0;?k?<?2;?k++)

res? =?Max(resolución, f[T][k][w]);

printf("%d ",RES);