powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / (Builder С++)Не могу найти алгоритм
7 сообщений из 7, страница 1 из 1
(Builder С++)Не могу найти алгоритм
    #33857513
Фотография raptor3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужен такой алгоритм - перестановки цифр -
например
1 2 3 4 5
необходимо переставить по 3
т.е.
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
3 4 5
Все варианты - но только не повторяющиеся т.е. 2 3 4 = 3 4 2 и такие варианты не должны попадать в результат
...
Рейтинг: 0 / 0
(Builder С++)Не могу найти алгоритм
    #33857673
Леонид33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

int i,j,l;

for (i=1;i<6;i++)

for (j=2;j<6;j++)

for (l=3;l<6;l++)
{
if (i<j && j<l)
Memo1->Lines->Add(IntToStr(i)+IntToStr(j)+IntToStr(l));
}
...
Рейтинг: 0 / 0
(Builder С++)Не могу найти алгоритм
    #33860585
Фотография raptor3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прикольное решение - тока надо сделать для произвольного массива (12,32,78,99,1)
...
Рейтинг: 0 / 0
(Builder С++)Не могу найти алгоритм
    #33860733
Фотография raptor3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int mas[]={1,2,3,4,5};
int i,j,l;

for (i=0;i<5;i++)

for (j=1;j<5;j++)

for (l=2;l<5;l++)
{
if (i<j && j<l)
Memo1->Lines->Add(IntToStr(mas )+IntToStr(mas[j])+IntToStr(mas[l]));
}

Можно же конечно так сделать - а как быть с вариантом - когда должна быть разбивка по N,т.е. число разбивки задается - не тока 3
...
Рейтинг: 0 / 0
(Builder С++)Не могу найти алгоритм
    #33864673
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int mas[M]={...};
int result[N];

в result храни индексы чисел из массива mas. Дефолтное значение каждого следующего индекса = значение предыдущего + 1. Когда увеличиваешь значение индекса, следующие за ним индексы инициализируешь дефолтными значениями. Когда индекс увеличить не получилось, увеличиваешь предыдущий индекс. Начальные условия result[0]=0, первым начинаешь увеличивать последний индекс. Когда не получилось увеличить нулевой индекс, конец.
...
Рейтинг: 0 / 0
(Builder С++)Не могу найти алгоритм
    #33871602
Фотография dudochkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raptor3int mas[]={1,2,3,4,5};
int i,j,l;

for (i=0;i<5;i++)

for (j=1;j<5;j++)

for (l=2;l<5;l++)
{
if (i<j && j<l)
Memo1->Lines->Add(IntToStr(mas )+IntToStr(mas[j])+IntToStr(mas[l]));
}

Можно же конечно так сделать - а как быть с вариантом - когда должна быть разбивка по N,т.е. число разбивки задается - не тока 3
...
Рейтинг: 0 / 0
(Builder С++)Не могу найти алгоритм
    #33871813
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В stl есть алгоритм, генерирующий перестановки в лексикографическом порядке.

int array[] = {0,1,2,3,4,5,6,7};
prev_permutation ( array , array+8);
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / (Builder С++)Не могу найти алгоритм
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]