[問題] 為什麼無法利用變數解題?

看板Perl作者 (一卡那亞)時間15年前 (2009/12/06 21:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
有一個問題,在下使用排列組合的方式去解, 其中有五個變數, 已經知道五個變數合 = 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)
文章代碼(AID): #1B6x9UCq (Perl)
文章代碼(AID): #1B6x9UCq (Perl)