求解vb演算法問題,求解一個vb演算法問題

2021-03-19 18:19:21 字數 3837 閱讀 7522

1樓:李大俠83**

++++57132899++++

那先坐的為a位

再計算出除去a位之外的相鄰組合

隨機選出一個組合

vb一個演算法問題。

2樓:匿名使用者

樓主到現在還沒結貼證明還沒找到所求,正好有空,我就補上vb6的碼:

問題考點:數字組合演算法,就用最簡單的遞迴吧。

你先建三text,text1的屬性:scrollbars設為2 multiline設定true, text1縱軸拉長點,text2、text3左右拉長點點(好看數),以及一***mand1

option explicit

dim sourcearray, dstarray, strsum as string, i***ist() as integer

private sub ***bine(a, n as integer, m as integer, b, mm as integer) '遞迴演算法

dim i%, j%, strsum$, sum%

for i = n to m step -1

b(m - 1) = i - 1

if m > 1 then

call ***bine(a, i - 1, m - 1, b, mm)

else

sum = 0

strsum = ""

for j = mm - 1 to 0 step -1

sum = sum + a(b(j))

strsum = strsum & a(b(j)) & "+"

next j

i***ist(sum) = 1

strsum = left$(strsum, len(strsum) - 1) & "=" & sum

text1 = text1 & strsum & vbcrlf

doevents

end if

next i

end sub

private sub ***mand1_click()

dim ncount as integer, arraymax as integer, arraymin as integer, strtemp as string, inttemp as integer

dim i as integer, sum as integer

ncount = inputbox("請輸入該系列數字的總數:")

arraymin = inputbox("請輸入該系列數字的最小值:")

do while arraymax <= arraymin

if arraymax <> 0 then

arraymax = inputbox("最大值必須比最小值" & arraymin & "大,請輸入該系列數字的最大值:")

else

arraymax = inputbox("請輸入該系列數字的最大值:")

end if

loop

randomize

text1 = ""

text2 = "該系列數字具體為:"

for i = 1 to ncount

inttemp = int(rnd * (arraymax - arraymin + 1) + arraymin) '隨機產生數字

text2 = text2 & inttemp & " "

strtemp = strtemp & inttemp & " "

next

sourcearray = split(rtrim$(strtemp))

dstarray = split(rtrim$(strtemp))

for i = 0 to ncount - 1

sum = sum + sourcearray(i)

next i

redim i***ist(sum) as integer

text3 = "計算中,請稍等......"

for i = 1 to ncount

call ***bine(sourcearray, ncount, i, dstarray, i)

next

text3 = "可能的和一定沒下列數字:"

for i = 0 to sum

if i***ist(i) = 0 then

text3 = text3 & i & " "

end if

next

text3 = text3 & "以及大於" & sum & "的所有數" '最終結果

end sub

3樓:世慷

//就像你上面的資料3,

7,4,5,4,8,20.用下面的**得到的結果是(不包含)

1、2、6、9、12、13、16、17、21、24、25、26、28、29、32、33、35、36、37、38、40、41、42、44、45、46、47、48、49、50、51、

//原理就是塞選法.這個演算法是很笨的。其實你可以先考慮排下序試試

private i***it(0) as boolean

private n, sumtemp as integer 'n表示第幾層

private data(0) as integer

private sub mainrun(byval s() as integer)

dim ret as string = ""

dim i as integer

data = s

n = data.length - 1

for i = 0 to n

sumtemp += data(i)

next

redim i***it(sumtemp)

sumtemp = 0

while n > 0

callrun(0, n)

n -= 1

end while

for i = 1 to i***it.length - 1

if i***it(i) = false then

ret += i.tostring + "、"

end if

next

messagebox.show(ret)

end sub

private sub callrun(byval index as integer, byval n2 as integer)

dim i, temp as integer

if n2 = 1 then

for i = index to data.length - 1

i***it(sumtemp + data(i)) = true

next

sumtemp = 0

else

temp = sumtemp

n2 -= 1

for i = index to data.length - n2 - 1

sumtemp = temp + data(index)

callrun(index + 1, n2)

next

end if

end sub

private sub test()//測試函式

dim s() as integer =

mainrun(s)

end sub

4樓:匿名使用者

做一個不定長的陣列

輸入資料到陣列

從0到全部數的和迴圈

從陣列第一個到最後一個迴圈對比

如果不是 則顯示此數

5樓:

表達得不夠清楚 還不是沒有理解你的意圖

vb6 0程式設計問題,求解答

w.paintpicture pic.picture,i,j,pic.scalewidth,pic.scaleheight pic.scalewidth pic.scaleheight 對嗎?nexy j next拼寫錯誤 for j 0 to w.height step pic.scaleheig...

請教VB的問題,請教VB的一個問題

mod 取模運算2008 02 26 15 40print 4 mod 3 1 print 4 mod 3 1 print 4 mod 3 1 print 4 mod 3 1 print 7.8 mod 4.56 3 總結 mod就是求餘數或稱取模,結果是兩數相除後的餘數。規則 若參加運算的運算元不...

VB徵集安全的註冊碼演算法,VB徵集一個安全的註冊碼演算法

你的智慧財產權保護意識真強,還不清楚自己編的軟體好不好用就先想到賺錢。先把軟體做好再說吧。哥編軟體n年了,編各類軟體無數,但沒有一個加了類似註冊碼這類東西的。不是不會加,而是根本沒必要去加。就說這麼多,自己理解去吧。沒有不被破解的註冊碼演算法至於搞一個軟體試用期,那個記錄試用期的資料除了登錄檔 建立...