0votos

Programación dinámica problema de tubo de chocolates en Perl

por josejuan hace 6 años

Idéntico que en Python (aunque la sintaxis es... bueno...).

Utiliza programación dinámica para resolver el problema de ganancia referente al tubo de chocolates

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl 
 
use strict; 
use Memoize; 
 
memoize('MaxGanancia'); 
 
my @precio = (3, 1, 1, 1, 1, 2, 2, 2, 2); 
 
sub MaxGanancia { 
  my ($a, $b) = @_; 
  if($a == $b) { 
    return ($precio[$a], $precio[$a]); 
  } else { 
    my @r1 = MaxGanancia($a, $b - 1); 
    my @r2 = MaxGanancia($a + 1, $b); 
    my $g1 = $precio[$b] + $r1[0] + $r1[1]; 
    my $g2 = $precio[$a] + $r2[0] + $r2[1]; 
    if($g1 > $g2) { 
      return ($g1, $precio[$b] + $r1[1]); 
    } else { 
      return ($g2, $precio[$a] + $r2[1]); 
 
my @r = MaxGanancia(0, @precio - 1); 
print $r[0]; 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.