技術(shù) 點
- 技術(shù)
- 點
- V幣
- 點
- 積分
- 46
|
本帖最后由 ljw990485 于 2009-2-23 21:01 編輯
找3個數(shù)就好辦,窮舉也很快,
option base 1
dim i as integer,j as integer,k as integer,A() as double,Target as double
dim t as double
n=?多少個就輸入多少吧
Redim A(n),自己寫程序輸入這n個數(shù)和目標(biāo)數(shù)Target
for i=1 to n-2
for j=i+1 to n-1
t=A(i)+A(j)
for k=j+1 to n
if abs(t+A(k)-Target)<1.0e-10 then
輸出 i,j,k,只找一組的話就結(jié)束
endif
多個next
以上程序循環(huán)次數(shù)
1)給定i,j
k循環(huán) n-(j+1)+1=n-j次
2)故給定i后,j,k循環(huán)次數(shù)為
[n-(i+1)]+[n-(i+2)]+...+1=(n-i)(n-i-1)/2=(n-i)^2/2-(n-i)/2
3)最大循環(huán)次數(shù)
[(n-1)^2+...+2^2]/2-[(n-1)+...+2]/2
=n(n-1)(n-2)/6=O(n^3/6)
n=1000時,最大循環(huán)數(shù)為166167000,不算大,關(guān)鍵是運算非常簡單 |
|