※ 引述《ssblack (小黑 )》之銘言:
: 目前在寫程式碼時遇到一些困難想來這邊請教一下各位高手
: 假設
: A B C D
: t=1 2 3 4 6
: t=2 5 7 3 8
: t=3 5 8 4 1
: t=4 2 4 3 5
: 我在t=1的時候希望可以選取A到D最大者 故我可以用MAX函數
: 但是T=2的時候要選取排除前一期最大者之後剩下的三期最大者
: 也就是MAX(A,B,C)=C
: T=3的時後依此類推 MAX(A,B)=B
: T=4就只剩下A了....
: 請問我該如何撰寫??
: 我有想到 是不是可以用IF函數 還是CASE函數??@@
用那些方法寫起來並不容易,寫出來也看不懂
我以一個陣列 item(k) as integer 為例,資料在 item(1..k)
另外宣告一個 valid(k) as boolean
1: 把 valid(1..k) 全設為true
2: 對i=1..k, 找出最大的 item(i), 但是同時要檢查 valid(i)
valid(i)=true 那麼 item(i) 才為合法的最大值
最後設 valid(i)=false
說不仔細,程式如下
for L=1 to k
if valid(L) then exit for ' 尋找第一個 valid item
next L
mx=n(L) ' 把最大值設為第一個 valid item
mxi=L ' 並記錄最大值位置
for i=L+1 to k
if valid(i) and item(i)>mx then ' **
mx=item(i) ' ** 找最大值
mxi=i ' ** 並記錄最大值位置
end if ' **
next i
valid(mxi)=false ' 下次執行時排除 item(i)
3: 重覆執行,最後就是你要的
--
BATCH 03 : 買張床 - 切達大俠 - 伐木人之歌 - http://tinyurl.com/3zpyx5
[B4準備中]: 謳歌金錢(7/02) - 單車超人(7/23) - http://tinyurl.com/66v6vq
[ 番外篇 ]: 包租婆也有過當羅莉的時候(7/17) - http://tinyurl.com/6j4ale
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
■ 蒙帝派松正體中文計畫 ■ Spam-a-lot and enjoy the pythonesque delight!
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ http://www.youtube.com/user/JamesBondXD▄▄
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.214.226