Имя: Пароль:
1C
1C 7.7
v7: Не получается алгоритм перебора всех разных последовательностей чисел от 1 до p
0 РусскийВедун
 
15.02.14
20:18
Есть число p.

Необходимо составить все возможные последовательности чисел от 1 до p .

допустим p=4
тогда 6 вариантов:
1. 4 3 2 1
2. 4 3 1 2
3. 4 2 3 1
4. 4 1 3 2
5. 4 2 1 3
6. 4 1 2 3

Для p получается (p-1)! вариантов. Казалось бы элементарные циклы, но бьюсь второй час и ничего путного не придумал. Может у вас есть идеи?
1 МихаилМ
 
15.02.14
21:15
http://yandex.ru/yandsearch?clid=9582&text=Вывести+комбинации+всех+чисел&lr=213


Переходим к обсуждению умственных способностей автора ветки.
2 Принт
 
15.02.14
21:17
(0) высшее образование есть?..
3 Злопчинский
 
15.02.14
21:30
одна рекурсивная процедура.
перебор 3 чисел - это то же самое что перебор двуххх.. индукция.. чему сейчас учат на вышке - ...?
4 Classic
 
15.02.14
22:15
(3)
Рекурсия зло :)
5 b159263
 
15.02.14
22:17
(4) Тогда Битовый сдвиг
wiki:Битовый_сдвиг
6 РусскийВедун
 
15.02.14
22:22
(1) вопрос не по числу 7, а по числу p которое может быть пускай 83759863. И реализовать это надо на 1с 7.7 а не с++.
7 Classic
 
15.02.14
22:36
(6)
Проще всего реализовать рекурсию. Вообще элементарно, сложнее - развернуть рекурсию в итерационно. Если чуть-чуть поднапрячься, то можно придумать математическое соответствие произвольному числу от 1 до р! одному набору.
8 ilpar
 
15.02.14
22:42
Начали с постановки. ГУТ, но задача какая?
9 ilpar
 
15.02.14
22:47
Если количество вариантов - то по-другому решаться может задача.
10 romix
 
15.02.14
22:48
Методом Монте-Карло можно.
11 ilpar
 
15.02.14
22:52
Графы всякие для транспортных задач.
12 РусскийВедун
 
15.02.14
22:57
(9) получить все варианты
13 1Сергей
 
15.02.14
23:01
(0) у тебя во всех вариантах первая четверка. Это условие задачи?
14 РусскийВедун
 
16.02.14
08:33
(13) нет. Интересуют все возможные последовотельности чисел.
15 an-korot
 
18.02.14
11:07
РусскийВедун, ты мозготрах тебе задачу задали ты и делай.
задача для 1 класса информатики.
16 Широкий
 
18.02.14
11:39
"допустим p=4
тогда 6 вариантов: "

Не пойму, почему только 6 вариантов?
17 Avganec
 
18.02.14
11:41
+(16) а про перестановку первого элемента забыли
18 supremum
 
18.02.14
11:43
(0) р - чем ограничено сверху?
19 dk
 
18.02.14
11:49
если разрядность небольшая (ну до 10 например)
то можно полным перебором и отбрасыванием лишних результатов
20 ifso
 
18.02.14
12:00
(0) Составь из заданных цифр максимальное число. В цикле уменьшай на единичку и проверяй ответ на наличие в нем всех заданных цифр.
^^
21 Широкий
 
18.02.14
12:05
Мой вариант, под 8-ку правда
Процедура ВыполнитьПеребор(ЗНАЧ СписокЭлементов,ИсходнаяСтрока="",НомерГруппировки=0)
    СлНомерГруппировки=НомерГруппировки+1;
    
    Для Каждого ЭлементСписка Из СписокЭлементов Цикл
        Если ЭлементСписка.Пометка Тогда
            Продолжить;
        КонецЕсли;
        
        ЭлементСписка.Пометка=Истина;
        
        Если СлНомерГруппировки=КоличествоЭлементов Тогда
            Сообщить(ИсходнаяСтрока+ЭлементСписка.Значение);
        Иначе
            ВыполнитьПеребор(СписокЭлементов,ИсходнаяСтрока+ЭлементСписка.Значение,СлНомерГруппировки);
        КонецЕсли;
        
        ЭлементСписка.Пометка=Ложь;
    КонецЦикла;
КонецПроцедуры

Процедура КнопкаВыполнитьНажатие(Кнопка)
    СписокЭлементов=Новый СписокЗначений;
    Для сч=1 По КоличествоЭлементов Цикл
        СписокЭлементов.Добавить(""+сч);
    КонецЦикла;
    
    ВыполнитьПеребор(СписокЭлементов);
КонецПроцедуры