El masajista problema
https://leetcode-cn.com/problems/the-masseuse-lcci/
(Encuentra una ecuación buena transición de estado)
Último estado y sólo hoy relevante, sigue siendo la clasificación discusión:
no aceptar una reserva hoy: ayer o no aceptar la reserva, o la última reserva aceptada, lo que es el valor máximo, a saber: dp [i] [0] = max ( dp [i - 1] [0 ], dp [i - 1] [1]);
por la cita de hoy: simplemente no aceptar una cita de ayer transferido de, junto con la actual frecuencia, a saber: dp [i] [? 1] = dp [i - 1 ] [0] + nums [i]
. 1 público clase Solution { 2 3. Pública int Masaje ( int [] los nums) { 4. Int len = nums.length; . 5 SI (len == 0 ) { 6. Retorno 0 ; . 7 } . 8 IF (LEN == . 1 ) { . 9 devolver los nums [ 0 ]; 10 } . 11 12 es // DP [i] [0]: el intervalo [0, i] en la solicitud de reserva aceptada, y el subíndice i para el día de hoy no aceptan reservas duración máxima 13 //dp [i] [1]: el intervalo de tiempo máximo [0, i] en la recepción de la solicitud de reserva, y el subíndice para ese día aceptado reserva i de 14 int [] [] DP = new new int [len] [ 2 ]; 15 DP [ 0 ] [ 0 ] = 0 ; 16 DP [ 0 ] [ . 1 ] = las nums [ 0 ]; . 17 18 es para ( int I = 1. ; I <len; I ++ ) { . 19 DP [I] [ 0 ] = el Math .max (DP [I - . 1 ] [ 0 ], DP [I - 1. ] [ 1. ]); 20 es dp [i] [ 1 ] = dp [i - 1 ] [ 0 ] + nums [i]; 21 } 22 de retorno Math.max (dp [len - 1 ] [ 0 ], dp [len - 1 ] [ 1 ]); 23 } 24 25 pública estáticas void main (String args []) { 26 solución Solución = nueva solución (); 27 // int [] nums = {1, 2, 3, 1}; 28 // int [] nums = {2, 7, 9, 3, 1}; 29 int [] nums = { 2, 1 , 4 , 5 , 3 , 1 , 1 , 3 }; 30 int res = solution.massage (nums); 31 Sistema. fuera .println (RES); 32 }
Autor: liweiwei1419
enlace: https: //leetcode-cn.com/problems/the-masseuse-lcci/solution/dong-tai-gui-hua-by-liweiwei1419-8/
Fuente: Botón de estancia (LeetCode)
los derechos de autor reservados por los autores . reimpresión comercial póngase en contacto con el autor autorizada, reimpresión no comercial por favor indique la fuente.