[問題] 為什麼無法利用變數解題?
有一個問題,在下使用排列組合的方式去解,
其中有五個變數,
已經知道五個變數合 = 2n,
而且每個變數都 <= n,
我們知道前四個變數決定後,
第五個變數就會 = 2n - 前四個變數合
我想問,為什麼我將紅色部份換成
$a[4] = 2*$n - $a[0] - $a[1] - $a[2] - $a[3]
會變成程式能執行,卻無法得到我想要的結果呢?
程式碼如下,感謝回覆^^
$n=8;
for ($a[0]=0; $a[0] <= $n; $a[0]++) {
for ($a[1]=0; $a[1] <= $n; $a[1]++) {
for ($a[2]=0; $a[2] <= $n; $a[2]++) {
last if ($a[2] + $a[1] + $a[0] > 2*$n);
for ($a[3]=0; $a[3] <= $n; $a[3]++) {
last if ($a[3] + $a[2] + $a[1] + $a[0] > 2*$n || $a[3] +
$a[2] + $a[1] + $a[0] < $n);
OUT: for ($a[4]=0; $a[4] <= $n; $a[4]++) {
next if ($a[0] + $a[1] + $a[2] + $a[3] + $a[4] != 2*$n);
for ($i=0; $i<=4; $i++) {
$x[$i] = $a[$i];
$x[$i+5] = $a[$i] - $x[$i];
until (8 * $x[$i] - 13 * $x[$i+5] >= $min[$i] && 8 *
$x[$i] - 13 * $x[$i+5] <= $max[$i]) {
$x[$i]--;
$x[$i+5]++;
last OUT if ($x[$i] < 0)
}}
$y = join ',',@x;
print "第$n步有最佳解\n";
for ($j=0; $j<=4; $j++) {
print "$C[$j](+8,-13) = ($x[$j] , $x[$j+5])\n";
}
}}}}}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.223.245.142
※ 編輯: drm343 來自: 61.223.245.142 (12/06 21:39)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章