Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 395
1

получить все комбинации по парам x y, чтобы получились следующие массивы

25.11.2016, 20:05. Показов 961. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Столкнулся с алгоритмической задачей, с первого взгляда казалось простой, но никак не могу решить как закодить. Есть массив значений:
1)Dx
2)Dy
3)Fx
4)Fy
5)Nx
6)Ny

Исходя из него нужно получить все комбинации по парам x y, чтобы получились следующие массивы:
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fy, 3)Nx
4 - 1)Dx, 2)Fy, 3)Ny
5 - 1)Dy, 2)Fx, 3)Nx
6 - 1)Dy, 2)Fx, 3)Ny
7 - 1)Dy, 2)Fy, 3)Nx
8 - 1)Dy, 2)Fy, 3)Ny

Гуру выручайте, а то уже мозг из ушей течет

Добавлено через 2 минуты
Еще количество заглавных(D,F,N) и строчных(x,y) не фиксировано.

Добавлено через 5 минут
, то есть здесь описан частный случай, может быть например D,F,N,J и x,y,g или любая другая комбинация.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2016, 20:05
Ответы с готовыми решениями:

Получить все возможные комбинации
Дана строка, например: АРТО Необходимо получить все возможные комбинации из совпадений букв...

Получить все возможные комбинации чисел
Доброго дня! Подскажите, как реализовать макрос? есть такие числа: "1" - 46 раз "2" - 64 раза...

Получить все возможные комбинации чисел
есть числа подскажите, пожалуйста, как при помощи средств delphi можно получить все их возможные...

Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел
Доброго всем времени суток.Я делаю только первые шаги в программировании.Начал разбираться с...

15
es geht mir gut
11272 / 4756 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
25.11.2016, 20:25 2
Было уже что-то подобное несколько раз, поищите по разделу
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 395
25.11.2016, 22:36  [ТС] 3
Цитата Сообщение от SoftIce Посмотреть сообщение
Было уже что-то подобное несколько раз, поищите по разделу
Если бы было, я не создал бы новую тему.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
25.11.2016, 23:56 4
на разборку
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Dim n%
Dim a()
 
Private Sub Command1_Click()
 
a = Array("", "F", "D", "N", "x", "y")
n = UBound(a)
List1.Clear
per (0)
 
End Sub
Sub per(t)
If t = n Then
 k = k + 1
    f = True
    For i = 1 To 2 * (n \ 2) Step 2
       If a(i) Like "[a-z]" Or a(i + 1) Like "[A-Z]" Then
          f = False: Exit For
       End If
    Next i
 
If f = True Then
st = ""
    For i = 1 To n
        st = st + a(i)
    Next i
     List1.AddItem st
 End If
Else
    For i = t + 1 To n
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
         Call per(t + 1)
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
    Next i
End If
End Sub
0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
26.11.2016, 10:40 5
Алгоритм генерации массива
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub www()
    Dim i As Long, j As Long, k As Long, arr1, arr2, n As Long, m As Long
    arr1 = Array("D", "N", "F", "J")
    arr2 = Array("x", "y", "g")
    n = UBound(arr1) + 1
    m = UBound(arr2) + 1
    For i = 0 To m ^ n - 1
        Debug.Print i + 1,
        k = i
        For j = 0 To n - 1
            Debug.Print arr1(j) & arr2(k Mod m),
            k = k \ m
        Next j
        Debug.Print
    Next i
End Sub
1
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 395
26.11.2016, 15:03  [ТС] 6
Цитата Сообщение от gaw Посмотреть сообщение
на разборку
Dx,Dy ... - нераздельны, считайте их string.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
26.11.2016, 15:11 7
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Dim n%
Dim a()
 
Private Sub Command1_Click()
 
a = Array("", "Fx", "Dy", "Nz", "Gj")
n = UBound(a)
List1.Clear
per 0, 0
 
End Sub
Sub per(t, k)
If t = n Then
st = "": k = k + 1
    For i = 1 To n
        st = st + a(i) & vbTab
    Next i
    
     List1.AddItem k & vbTab & st
 End If
 
   For i = t + 1 To n
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
         Call per(t + 1, k)
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
    Next i
 
End Sub
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 395
26.11.2016, 15:20  [ТС] 8
gaw, это перебор всего со всем, посмотрите внимательнее в задачу, Dy и Dx не могут быть в одном массиве, как и Fx и Fy и т. п. поэтому у меня и получается 8 результатов, а не 24 как у вас.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
26.11.2016, 15:23 9
Цитата Сообщение от CRIDEL Посмотреть сообщение
Есть массив значений:
1)Dx
2)Dy
3)Fx
4)Fy
5)Nx
6)Ny
и теперь
Цитата Сообщение от CRIDEL Посмотреть сообщение
Dy и Dx не могут быть в одном массиве, как и Fx и Fy
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 395
26.11.2016, 15:26  [ТС] 10
Мозг легко решает эту задачу, а как заставить копьютер

Добавлено через 39 секунд
gaw,

Цитата Сообщение от CRIDEL Посмотреть сообщение
Исходя из него нужно получить все комбинации по парам x y, чтобы получились следующие массивы:
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fy, 3)Nx
4 - 1)Dx, 2)Fy, 3)Ny
5 - 1)Dy, 2)Fx, 3)Nx
6 - 1)Dy, 2)Fx, 3)Ny
7 - 1)Dy, 2)Fy, 3)Nx
8 - 1)Dy, 2)Fy, 3)Ny
0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
26.11.2016, 16:37 11
Цитата Сообщение от CRIDEL Посмотреть сообщение
Мозг легко решает эту задачу, а как заставить копьютер
код из 5го сообщения не подходит?
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 395
26.11.2016, 17:45  [ТС] 12
Цитата Сообщение от m-ch Посмотреть сообщение
код из 5го сообщения не подходит?
нет, даже близко не то, gaw, понял идею, тут нужна какого-то рода рекурсия рекурсии, но не дается что-то никак
0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
26.11.2016, 17:50 13
Цитата Сообщение от CRIDEL Посмотреть сообщение
может быть например D,F,N,J и x,y,g
Сколько должно быть вариантов для указанных исходных данных?
У меня получилось - 81 вариант:
Кликните здесь для просмотра всего текста
1 Dx Nx Fx Jx
2 Dy Nx Fx Jx
3 Dg Nx Fx Jx
4 Dx Ny Fx Jx
5 Dy Ny Fx Jx
6 Dg Ny Fx Jx
7 Dx Ng Fx Jx
8 Dy Ng Fx Jx
9 Dg Ng Fx Jx
10 Dx Nx Fy Jx
11 Dy Nx Fy Jx
12 Dg Nx Fy Jx
13 Dx Ny Fy Jx
14 Dy Ny Fy Jx
15 Dg Ny Fy Jx
16 Dx Ng Fy Jx
17 Dy Ng Fy Jx
18 Dg Ng Fy Jx
19 Dx Nx Fg Jx
20 Dy Nx Fg Jx
21 Dg Nx Fg Jx
22 Dx Ny Fg Jx
23 Dy Ny Fg Jx
24 Dg Ny Fg Jx
25 Dx Ng Fg Jx
26 Dy Ng Fg Jx
27 Dg Ng Fg Jx
28 Dx Nx Fx Jy
29 Dy Nx Fx Jy
30 Dg Nx Fx Jy
31 Dx Ny Fx Jy
32 Dy Ny Fx Jy
33 Dg Ny Fx Jy
34 Dx Ng Fx Jy
35 Dy Ng Fx Jy
36 Dg Ng Fx Jy
37 Dx Nx Fy Jy
38 Dy Nx Fy Jy
39 Dg Nx Fy Jy
40 Dx Ny Fy Jy
41 Dy Ny Fy Jy
42 Dg Ny Fy Jy
43 Dx Ng Fy Jy
44 Dy Ng Fy Jy
45 Dg Ng Fy Jy
46 Dx Nx Fg Jy
47 Dy Nx Fg Jy
48 Dg Nx Fg Jy
49 Dx Ny Fg Jy
50 Dy Ny Fg Jy
51 Dg Ny Fg Jy
52 Dx Ng Fg Jy
53 Dy Ng Fg Jy
54 Dg Ng Fg Jy
55 Dx Nx Fx Jg
56 Dy Nx Fx Jg
57 Dg Nx Fx Jg
58 Dx Ny Fx Jg
59 Dy Ny Fx Jg
60 Dg Ny Fx Jg
61 Dx Ng Fx Jg
62 Dy Ng Fx Jg
63 Dg Ng Fx Jg
64 Dx Nx Fy Jg
65 Dy Nx Fy Jg
66 Dg Nx Fy Jg
67 Dx Ny Fy Jg
68 Dy Ny Fy Jg
69 Dg Ny Fy Jg
70 Dx Ng Fy Jg
71 Dy Ng Fy Jg
72 Dg Ng Fy Jg
73 Dx Nx Fg Jg
74 Dy Nx Fg Jg
75 Dg Nx Fg Jg
76 Dx Ny Fg Jg
77 Dy Ny Fg Jg
78 Dg Ny Fg Jg
79 Dx Ng Fg Jg
80 Dy Ng Fg Jg
81 Dg Ng Fg Jg

Если не правильно, то объясните задачу.
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 395
26.11.2016, 18:06  [ТС] 14
Цитата Сообщение от m-ch Посмотреть сообщение
Если не правильно, то объясните задачу.
должно получиться восемь массивов по три элемента(по числу пар x,y) как в заглавии:
Цитата Сообщение от CRIDEL Посмотреть сообщение
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fy, 3)Nx
4 - 1)Dx, 2)Fy, 3)Ny
5 - 1)Dy, 2)Fx, 3)Nx
6 - 1)Dy, 2)Fx, 3)Ny
7 - 1)Dy, 2)Fy, 3)Nx
8 - 1)Dy, 2)Fy, 3)Ny

то есть на каждый D приходится два F и два N, но может приходится больше если будет, например Nx Ny Nz
тогда получится 12 массивов
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fx, 3)Nz
4 - 1)Dx, 2)Fy, 3)Nx
5 - 1)Dx, 2)Fy, 3)Ny
6 - 1)Dx, 2)Fy, 3)Nz
7 - 1)Dy, 2)Fx, 3)Nx
8 - 1)Dy, 2)Fx, 3)Ny
9 - 1)Dy, 2)Fx, 3)Nz
10- 1)Dy, 2)Fy, 3)Nx
11- 1)Dy, 2)Fy, 3)Ny
12- 1)Dy, 2)Fy, 3)Nz
0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
26.11.2016, 18:31 15
Я просил привести пример для вашего варианта:
Цитата Сообщение от CRIDEL Посмотреть сообщение
может быть например D,F,N,J и x,y,g
Произвел генерацию всех сочетаний:
Dx, Dy, Dg
Fx, Fy, Fg
Nx, Ny, Ng
Jx, Jy, Jg

Добавлено через 1 минуту
Возможно Вам нужно что то подобное: Генерация всех возможных словосочетаний из столбцов
0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
26.11.2016, 18:41 16
Применительно для Ваших данных решение в Excel на VBA (ничего в коде не менял, только вставил данные)
Вложения
Тип файла: zip Слова20-2.zip (16.3 Кб, 5 просмотров)
1
26.11.2016, 18:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2016, 18:41
Помогаю со студенческими работами здесь

Получить все возможные комбинации массива чисел
Привет всем! Подскажите, пожалуйста, кто сталкивался, второй день бьюсь и не соображу ) Есть...

Массивы: Все элементы, следующие за наибольшим элементом массива, увеличить на 10
Все элементы, следующие за наибольшим элементом массива, увеличить на 10

Для пары чисел получить все комбинации сложения и вычитания
Нужно решить задачу на ассемблере. Преподаватель задает два базовых числа ± X и ± Ү. Студент...

Высчитать все различные комбинации сумм элементов, чтобы в результате получилось число 1.5
суть такая, Есть массив напр: $ar=0.5; $ar=0.375; $ar=0.1; В массиве может быть как больше...

Как получить все возможные комбинации из заглавных и строчных букв в слове
Здравствуйте уважаемые программисты столкнулся с такой проблемой, нужно получить одно и тоже слово...

Как перегрузить методы, чтобы получились аналоги get set из C#
Как можно перегрузить методы, что бы получился аналог get set из C#. Т.е. что то такое: class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru