С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 17

Перебрать все возможные комбинации трех фигур

11.03.2012, 14:35. Показов 6930. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите как реализовать такое:
есть три фигуры - круг,квадрат,треугольник
необходимо создать возможные комбинации из 3,4,5,6,7,8,9, и 10 подобных фигур.

для примера из 2-х фигур можно сделать такие комбинации:
круг-круг
круг-квадрат
круг-треугольник
квадрат-квадрат
и т.д
как программно получить всевозможные комбинации ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2012, 14:35
Ответы с готовыми решениями:

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

Перебрать все возможные комбинации
Доброго времени суток. Столкнулся с такой задачей и не знаю, как подступится. Опишу своими словами. Есть четыре столбика слов. В...

Перебрать все возможные комбинации цифр
Помогите написать код, котрый будет выводить все числа, например, в троичной системе. Т. е. Нам даны числа 0,1,2. Нужно вывести 0 1 2...

16
 Аватар для gitarillo
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
12.03.2012, 13:36
СергейМ, вопрос первый - важна ли последовательность?
Например Круг -Квадрат и Квадрат - Круг - разные вещи?
Число комбинаций при первом случае будет 3кол-во фигур). То есть для двух число комбинаций будет 3^2=9.
Для 10 комбинаций и трех фигур- 3^10=59049 комбинаций.
1
37 / 37 / 2
Регистрация: 11.11.2011
Сообщений: 423
12.03.2012, 16:59
СергейМ,можно попробовать генерировать разные числа(их количество зависит от количества фигур).
0
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 17
12.03.2012, 17:20  [ТС]
gitarillo
последовательность не важна,вполне возможно что в комбинации из 10 фигур будет 9 кругов и 1 треугольник, или 10 квадратов.
Важно что бы последующие комбинации не повторяли предыдущие, допустим есть комбинацияя 3 круга подряд, значит больше ни в одной из последующих комбинаций,не зависимо от количества фигур, не должно повторяться подряд 3 круга.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2012, 17:52
СергейМ, для трех вариантов самый примитивный способ выглядит следующим образом
VB.NET
1
2
3
4
5
6
7
8
Dim variants As String = "ABC"
        For i As Byte = 0 To variants.Length - 1
            For j As Byte = 0 To variants.Length - 1
                For k As Byte = 0 To variants.Length - 1
                    Console.WriteLine("{0}-{1}-{2}", variants(i), variants(j), variants(k))
                Next
            Next
        Next
0
 Аватар для SergKr
67 / 41 / 3
Регистрация: 07.12.2010
Сообщений: 328
12.03.2012, 22:39
А вот в продолжение вопроса! Скажем у меня есть несколько символов (точное кол-во всегда разное). Для примера: 1, 2, 3. Нужно составить все возможные комбинации программно для этих символов. Для трёх символов (1, 2, 3) будет что-то типа:
1
2
3
11
12
13
111
112
113
121
122
123
131
132
133
И так далее для 2 и 3
А вот если символов 10? Или 12? Как сделать алгоритм? Бьюсь через For, но пока ничего путного не придумал. В начале программы известно только кол-во символов из которых нужно и составлять строки. Записаны они в TextBox1. Кто что думает по поводу этого вопроса?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2012, 22:49
Цитата Сообщение от SergKr Посмотреть сообщение
А вот если символов 10?
сделать 10 циклов For - по принципу, описанному выше, только при этом надо знать точное количество выводимых за раз элементов - если - три элемента - то три цикла For (два из них вложенные), если два - то два цикла for.
0
 Аватар для SergKr
67 / 41 / 3
Регистрация: 07.12.2010
Сообщений: 328
12.03.2012, 23:06
Eugene22, А если не известно сколько символов? Как следать чтоб ввёл символы в TextBox и появились ВСЕ возможные результаты?

Добавлено через 1 минуту
Или даже так? Если известно, что символов к примеру 3. Как сделать ВСЕ возможные результаты?

Добавлено через 32 секунды
Т.е. я делаю 3 цикла For, а вот в них как указать-то? Ума не прилажу...

Добавлено через 5 минут
В таком коде:
VB.NET
1
2
3
4
5
6
7
8
fill = "12345"
        For i = 1 To Len(fill)
            For o = i To Len(fill)
                ListBox1.Items.Add(Mid(fill, i, o))
 
            Next
 
        Next
Получается:
1
12
123
1234
12345
23
234
2345
2345
345
345
345
45
45
5
Как видно не совсем то что надо. Вот и бью голову об клавиатуру!!!
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2012, 23:08
Цитата Сообщение от SergKr Посмотреть сообщение
Или даже так? Если известно, что символов к примеру 3. Как сделать ВСЕ возможные результаты?
Добавлено через 32 секунды
Т.е. я делаю 3 цикла For, а вот в них как указать-то? Ума не прилажу...
я ж уже сделал для вывода трех символов причем без разницы сколько символов находится в перебираемом массиве, смотрите мое решение
0
 Аватар для SergKr
67 / 41 / 3
Регистрация: 07.12.2010
Сообщений: 328
12.03.2012, 23:12
Eugene22, Я смотрел. Но дело в том, что мне не только все три символа надо заполнить. Надо чтоб ещё и 2 символа заполнились. Т.е. 11, 12, 13, 22, 21, 23, 33, 31, 32.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2012, 23:14
Цитата Сообщение от SergKr Посмотреть сообщение
Я смотрел. Но дело в том, что мне не только все три символа надо заполнить. Надо чтоб ещё и 2 символа заполнились.
ну перед выводом трех символов сделайте вывод двух символов по аналогии с помощью двух циклов

Теоретически я даже представляю, как сделать подобное для любого количества выводимых за раз элементов - с помощью динамической компиляции, только нафиг это надо. Для 10 чисел в массиве комп будет выводить все результаты черт знает сколько. Поэтому лучше заранее знать количество за раз выводимых элементов.
Хотя, может быть, есть и другие возможности решения данной проблемы, отличные от динамической компиляции
0
 Аватар для SergKr
67 / 41 / 3
Регистрация: 07.12.2010
Сообщений: 328
13.03.2012, 00:14
Eugene22, что за динамическая компиляция? Можно по подробнее?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
13.03.2012, 00:25
SergKr, смотри в F.A.Q - Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
1
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 17
15.03.2012, 11:32  [ТС]
Eugene22
попробовал твой метод для 10 фигур:
VB.NET
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
Dim variants As String = "AAAAAAAABC"
        Dim str As String = ""
        ListBox4.Items.Clear()
        For q As Byte = 0 To variants.Length - 1
            For w As Byte = 0 To variants.Length - 1
                For a As Byte = 0 To variants.Length - 1
                    For r As Byte = 0 To variants.Length - 1
                        For t As Byte = 0 To variants.Length - 1
                            For y As Byte = 0 To variants.Length - 1
                                For u As Byte = 0 To variants.Length - 1
                                    For i As Byte = 0 To variants.Length - 1
                                        For o As Byte = 0 To variants.Length - 1
                                            For p As Byte = 0 To variants.Length - 1
                                                str = variants(q) & variants(w) & variants(a) & variants(r) & variants(t) & variants(y) & variants(u) & variants(i) & variants(o) & variants(p)
                                                ListBox4.Items.Add(str)
                                            Next
                                        Next
                                    Next
                                Next
                            Next
                        Next
                    Next
                Next
            Next
        Next
        Dim distColl = (From v In ListBox4.Items Select (v.ToString) Distinct).ToArray 'удаление повторяющихся вариантов
        ListBox4.Items.Clear()
        ListBox4.Items.AddRange(distColl)
        Label7.Text = "Вариантов: " & ListBox4.Items.Count
результат:
CLR не удалось перейти из COM-контекста 0x32d0ab8 в COM-контекст 0x32d0c28 за 60 секунд. Наиболее вероятно, что поток, владеющий контекстом/апартаментом назначения, находится в режиме ожидания или выполнения очень длительной операции без прокачки сообщений Windows. Обычно эта ситуация отрицательно влияет на производительность и даже может привести к зависанию приложения или чрезмерному расходованию памяти. Чтобы избежать этой проблемы, все потоки однопоточного апартамента (STA) должны использовать примитивы ожидания для прокачки (например, CoWaitForMultipleHandles) и периодически прокачивать сообщения во время длительных операций.
вывод: проблемма остаётся актуальной.

Добавлено через 51 секунду
прога во время выполнения умирает
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
15.03.2012, 12:10
Не знаю, у меня прога выполнялась минуты две, но потом мне надоело и я ее вырубил. Могу посоветовать только выполнять данный код в другом потоке, например, использовать компонент BackgroundWorker или Thread
0
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 17
15.03.2012, 13:31  [ТС]
Eugene22, думаю и другой поток загнётся и фоновый режим тут не поможет.Должен быть какой то оптимизированный алгоритм для выполнения подобных задач.
0
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 17
18.03.2012, 10:16  [ТС]
никто не может подсказать вариант решения данной задачи ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2012, 10:16
Помогаю со студенческими работами здесь

Как перебрать все возможные комбинации из n объектов?
Доброго дня, пытаюсь написать программу которая бы перебрала все возможные комбинации из n объектов или конкретнее у нас есть массив...

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

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

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

Перебрать в цикле все возможные комбинации: вопрос оптимизации кода
Здравствуйте! Задача следующая: есть несколько массивов. Пусть будет 5. Необходимо перебрать все возможные комбинации по 5 значений, каждое...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru