Имя: Пароль:
1C
1С v8
алгоритм перебора
0 withoutname
 
19.01.13
21:09
Люди добрые подскажите алгоритм
есть массив чисел, надо составить из них числа, например по 3 (с возможностью изменения).
пример
массив 1 3 5 7 12 26 34

1 3 5
1 3 7
1 3 12
1 3 26
1 3 34
3 5 7
3 5 12
3 5 26
3 5 34
...
1 Wobland
 
19.01.13
21:13
это называется размещение, вроде. ищи
2 Wobland
 
19.01.13
21:33
3 ШтушаКутуша
 
19.01.13
21:47
'размещения из n - элементов по к, например 7 элементов по 3
Sub ГенераторРазмещений(n As Long, k As Long, AA() As Long)
 Dim i As Long, ii As Long, _
     j As Long, p As Long
 
 ii = Application.WorksheetFunction.Fact(n) / _
     (Application.WorksheetFunction.Fact(k) *   Application.WorksheetFunction.Fact(n - k))
 
 ReDim a(k) As Long
 ReDim AA(ii, k) As Long
 
 For j = 1 To k
   a(j) = j
 Next j
 
 p = k
 For i = 1 To ii
   For j = 1 To k
     AA(i, j) = a(j)
   Next j
   
   If a(k) = n Then
     p = p - 1
   Else
     p = k
   End If
   If p >= 1 Then
     For j = k To p Step -1
       a(j) = a(p) + j - p + 1
     Next j
   End If
 Next i
 
End Sub
4 ШтушаКутуша
 
19.01.13
21:48
+3 то есть правильнее не размещений, а сочетаний
5 Wobland
 
19.01.13
21:54
ну да, похоже, ему сочетания нужны