作者MOONRAKER (㊣OGC-1701)
看板Visual_Basic
标题Re: [VBA ] 请问??
时间Sun Oct 26 15:47:20 2008
※ 引述《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!
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ https://www.youtube.com/user/JamesBondXD▄▄
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.214.226