use strict;
use warnings;
use utf8;
use Data::Dumper;
use Time::HiRes qw(gettimeofday tv_interval);
binmode(STDOUT, ":utf8");
&main;
sub main {
my $t0 = [gettimeofday];
$\="\n";
my $input_n = 5;
my @n_nums_arr = (1, 5, 7, 10, 21);
my $input_q = 4;
my @q_nums_arr = (2, 4, 17, 8);
my $result;
for my $q_num (@q_nums_arr) {
$result = &exhaustive_search_algorithm(0, $input_n, \@n_nums_arr, $input_q, $q_num);
if ($result == 1) {
print 'yes';
} else {
print 'no';
}
}
my $timer = tv_interval($t0)."\n";
print "$timer ms\n";
}
sub exhaustive_search_algorithm {
my ($i, $input_n, $n_nums_arr, $input_q, $q_num) = @_;
return 1 if ($q_num == 0);
return 0 if ($i >= $input_n);
my $num_diff = $q_num - $n_nums_arr->[$i];
my $res = &exhaustive_search_algorithm($i + 1, $input_n, $n_nums_arr, $input_q, $q_num) ||
&exhaustive_search_algorithm($i + 1, $input_n, $n_nums_arr, $input_q, $num_diff);
return $res;
}