use strict; use warnings; my $w = ; my $num = ; my @b = split ' ', ; my %p = (0 => 0); my %n = %p; for my $i (@b) { for my $j (keys %p){ if($i+$j <= $w){ if(!defined($n{$i+$j}) or $n{$j}+1 > $n{$i+$j}){ $n{$i+$j} = $n{$j}+1; } } } %p = %n; } print $p{(sort {$p{$b} <=> $p{$a}} keys %p)[0]};