我試圖弄清楚爲什麼這樣會在每個週期中打印「多數元素」候選者。多數元素未能結束週期
我一直在努力工作的代碼是多數元素搜索(找到一個元素重複超過列表長度的一半)。
我無法分離找到候選者和測試數組的過程,因爲我的輸入是具有不確定數量數組的文本文件。這是來自rosalind.info的練習,每次嘗試解決時都有不同的輸入。
輸入的一個例子是
-5 5 5 5 5 5 5 5 -8 7 7 7 1 7 3 7 -7 1 6 5 10 100 1000 1 -5 1 6 7 1 1 10 1
這是我到目前爲止已經寫的。
foreach my $currentrow (@lists) {
my @row =();
@row = split(/\s/, $currentrow);
my $length = $#row;
my $count = 0;
my $i = 0;
for $i (0 .. $length - 1) {
if ($count == 0) {
$candidate = $row[$i];
$count++;
}
if (($count > 0) and ($i = $length - 1)) {
my $counter2 = 0;
for my $j (0 .. $length - 1) {
if ($row[$j] == $candidate) {
$counter2++;
}
}
if ($counter2 <= ($#row/2) and ($i = $length - 1)) {
$candidate = -1;
print $candidate, " ", $i, " ";
}
if ($counter2 > ($#row/2) and ($i = $length - 1)) {
print $candidate, " ", $i, " ";
}
}
if ($candidate == $row[$i] and $count > 0) {
$count = $count + 1;
}
if ($candidate != $row[$i] and $count > 0) {
$count = $count - 1;
}
}
}
顯示一些樣品輸入,預期的輸出和實際輸出 –
-5 5 5 5 5 5 5 5 -8 7 7 7 1 7 3 7 -7 1 6 5 10 100 1000 1 -5 1 6 7 1 1 10 1是1輸入5 6 5 6 5 6 5 6 5 6 5 6 5 6 -1 6 7 6 7 6 7 6 -1 6 7 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6 -1 6我得到的輸出=( –
你的問題到底是什麼? – Borodin