0
我试图在Perl中编写8皇后问题,我似乎遇到了无法修复的无限循环。我认为问题在于女王增量,因为当我打印“$女王”时;在我的求解函数中,我得到的是一堆1。我的Perl程序有一个无限循环(8皇后)
#
# implement 8 queen problem
#
my $size = 8;
my @answer =();
sub is_conflict($$){
my ($row, $queen) = @_;
for(my $i=0; $i<$queen; $i=$i+1){
my $temp = $answer[$i];
if (($temp eq $row) or #same row
($temp eq ($row - ($queen - $i))) or #same diagonal
($temp eq ($row + ($queen-$i)))){ #same diagonal
return 1; #return true
}
}
return 0; #return false
}
sub solve($){
my $queen = @_;
if($queen eq $size){
print "@answer\n";
@answer =();
}
else{
for(my $i=0; $i<$size; $i=$i+1){
if(is_conflict($i,$queen) eq 0){
push(@answer, $i);
solve($queen+1);
}
}
}
}
solve(0);
一个另外:不要使用原型。他们不会做你认为他们做的事。失去'($)'。 – Sobrique