iT邦幫忙

0

vb.net的陣列排列組合迴圈問題

因為不擅長.net所以想請各位先進幫我解惑
我的來源
Dim i() as Integer = {1,2,3,4}
我想要輸出的結果是
1
1+2
1+3
1+4
1+2+3
1+2+4
1+2+3+4
1+3+4
2
2+3
2+4
...
以此類推

我大概有個概念覺得應該是要用遞迴做的,
但是不太清楚要怎麼用vb.net寫,
我目前在專案環境被限制寫法類似:
Dim myfunc As Func(Of Integer,Integer) = Function(ByVal num As Integer) As Integer
Dim res As Integer
[我沒有概念的地方]
Return res
End Function
arg=myfunc(i)

懇請大家給我一些想法和指教,謝謝大家

小魚 iT邦大師 1 級 ‧ 2019-04-24 07:47:11 檢舉
感覺不像遞迴,
比較像迴圈吧...

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-04-24 09:12:27

這個去改

froce iT邦大師 1 級 ‧ 2019-04-24 10:29:46 檢舉

python:

from itertools import combinations
testList = [1, 2, 3, 4]

for i in range(1, len(p)+1):
	for c in combinations(testList, i):
		print(c, "sum:", sum(c))

結果:

(1,) sum: 1
(2,) sum: 2
(3,) sum: 3
(4,) sum: 4
(1, 2) sum: 3
(1, 3) sum: 4
(1, 4) sum: 5
(2, 3) sum: 5
(2, 4) sum: 6
(3, 4) sum: 7
(1, 2, 3) sum: 6
(1, 2, 4) sum: 7
(1, 3, 4) sum: 8
(2, 3, 4) sum: 9
(1, 2, 3, 4) sum: 10

不過我還是得說一句,作業自己想,尤其是演算法。

j2ian iT邦新手 5 級 ‧ 2019-04-24 13:21:39 檢舉
        For i = 0 To arrList.Count - 1
            c = i + 1
            str2 = arrList(i)
            Console.WriteLine(str2)
            For c = c To arrList.Count - 1
                Console.WriteLine(arrList(i) + "+" + arrList(c))
                str2 = str2 + "+" + arrList(c)
                d = c + 1
                For d = d To arrList.Count - 1
                    Console.WriteLine(str2 + "+" + arrList(d))
                    'str2 = str2 + "+" + arrList(c)
                Next
            Next
        Next

我想的是這樣,輸出的結果是
1
1+2
1+2+3
1+2+4
1+3
1+2+3+4
1+4
2
2+3
2+3+4
2+4
3
3+4
4
這是我希望的順序,但是我不知道為什麼1+3會在1+2+3+4前面,而且這樣的寫法只能做四個元素的組合,超過就會亂掉,所以我一定那裡想錯了,現在有點腦袋卡住

0
a5502008
iT邦新手 5 級 ‧ 2019-04-25 10:12:28

遞迴只應天上有,人間該當用迴圈

我要發表回答

立即登入回答