Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / (Builder С++)Не могу найти алгоритм / 7 сообщений из 7, страница 1 из 1
17.07.2006, 12:24
    #33857513
raptor3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Builder С++)Не могу найти алгоритм
Нужен такой алгоритм - перестановки цифр -
например
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
17.07.2006, 13:07
    #33857673
Леонид33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Builder С++)Не могу найти алгоритм
Привет!

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
18.07.2006, 13:25
    #33860585
raptor3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Builder С++)Не могу найти алгоритм
прикольное решение - тока надо сделать для произвольного массива (12,32,78,99,1)
...
Рейтинг: 0 / 0
18.07.2006, 13:59
    #33860733
raptor3
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Builder С++)Не могу найти алгоритм
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
19.07.2006, 16:49
    #33864673
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Builder С++)Не могу найти алгоритм
int mas[M]={...};
int result[N];

в result храни индексы чисел из массива mas. Дефолтное значение каждого следующего индекса = значение предыдущего + 1. Когда увеличиваешь значение индекса, следующие за ним индексы инициализируешь дефолтными значениями. Когда индекс увеличить не получилось, увеличиваешь предыдущий индекс. Начальные условия result[0]=0, первым начинаешь увеличивать последний индекс. Когда не получилось увеличить нулевой индекс, конец.
...
Рейтинг: 0 / 0
22.07.2006, 08:10
    #33871602
dudochkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Builder С++)Не могу найти алгоритм
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
22.07.2006, 14:46
    #33871813
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Builder С++)Не могу найти алгоритм
В stl есть алгоритм, генерирующий перестановки в лексикографическом порядке.

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


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