Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Заблокирован

По исходной перестановке вывести все циклы, которые в ней есть, в лексикографическом порядке

16.06.2016, 20:39. Показов 1954. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перестановкой π порядка n называется последовательность из n попарно различных целых положительных чисел p1, p2, ... , pn, где каждое 1 <= pi <= n. Результатом применения перестановки π к 1 является число p1, аналогично π(2)=p2. Последовательность 1, π(1), π(π(1)),…назовём орбитой элемента 1. Понятно, что орбита любого элемента всегда является циклической. Из теории перестановок известно, что любая перестановка однозначно раскладывается в произведение циклов.
Требуется составить программу, которая по исходной перестановке выводит все циклы, которые в ней есть в лексикографическом порядке.
Формат входного файла
Первая строка входного файла содержит целое число n - количество элементов перестановки (1 ≤ n ≤ 10000). Вторая строка содержит n целых чисел, образующих данную перестановку, разделённых пробелами.
Формат выходного файла
Выведите в первую строку выходного файла одно число - количество циклов в данной перестановке. Во второй строке необходимо вывести все циклы, имеющиеся в данной перестановке. Каждый цикл заключается в круглые скобки, должен начинаться со своего минимального элемента, после которого через один пробел перечисляются остальные элементы цикла. Пробелы перед скобками и после скобок ставить не нужно. Циклы перечисляются в порядке возрастания минимальных элементов.
Примеры
Input.txt Output.txt
5 5
1 2 3 4 5 (1)(2)(3)(4)(5)

Помогите в реализации!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2016, 20:39
Ответы с готовыми решениями:

Преобразовать строку так, чтобы сначала в ней шли все цифры исходной строки, а потом – все буквы исходной строки, но в обратном порядке
1)Даны сведения о 8 фильмах: название, режиссер, страна, год выпуска, стоимость(расходы на выпуск), доходы. Вывести сведения о фильмах,...

Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке
При помощи рекурсии по данному числу n выведите на экран все перестановки чисел от 1 до n в лексикографическом порядке. Нужен текст...

Привести в лексикографическом порядке (в порядке возрастания) все r-размещения с повторениями из элементов множества {1,2, .. n}
Нужно составить программу с указанными входными данными и результатами. Задано натуральное число n, которое имеет такое ограничение...

2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,710
Записей в блоге: 14
19.06.2016, 09:24
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот код, который, возможно, поможет:

Pascal
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Program Prg59;
 
Const NMAX = 100;
 
Var P1,P2 : Array[1..NMAX] of integer;
Var i,n   : integer;
 
Procedure NextLoop(Var P,R : Array[1..NMAX] of integer; n : integer);
 
Var i,k,u,v : integer;
 
Begin
 
     for i:=1 to n Do R[i]:=0;
 
     k:= 0;
     
     For i:= 1 To n Do
         If P[i] <> 0 Then Begin
            k:=i;
            break;
         End;
 
     If k= 0 Then Exit;
     
     v:=1;
     R[1]:=k;
     
     While (True) Do Begin
        u:=P[k];
        P[k]:=0;
        If R[1]=u Then exit;
        v:=v+1;
        R[v]:=u;
        k:=u;
     End;
     
End;
 
Begin
 
     write('n=');
     readln(n);
     write('Enter permutation: ');
     
     for i:=1 to n do read(P1[i]);
     
     While (true) Do begin
     
         NextLoop(P1,P2,n);
         
         if P2[1]=0 Then break;
         
         write('(');
         for i:=1 to n do
             if P2[i]<>0 then write(P2[i]) else break;
         writeln(')');
         
      End;
      
      Writeln('OK');
      
End.
Добавлено через 57 секунд
Работа выглядит так:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
n=5
Enter permutation: 1 2 3 4 5
(1)
(2)
(3)
(4)
(5)
OK
n=5
Enter permutation: 2 1 4 5 3
(12)
(345)
OK
0
Заблокирован
22.06.2016, 23:02  [ТС]
Возможно и помогло бы, но сделал так:

Pascal
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
uses crt;
var
p,i,j,a,count,min,imin: integer;
mas: array[1..30] of integer;
mas2: array[1..30] of byte;
 
begin
readln(p);
 
for i:=1 to p do read(mas[i]);
 
for i:=1 to p do mas2[i]:=0;
 
i:=1;
while (i<=p) do
  if mas2[i]=0 then begin
      a:=mas[i];
      mas2[i]:=1;
      write('(',i);
        while a<>i do begin
         write(a);
 
         mas2[a]:=1;
          a:=mas[a];
            end;
          i:=i+1;
          write(')') end
  else
i:=i+1;
end.
В любом случае - СПАСИБО!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.06.2016, 23:02
Помогаю со студенческими работами здесь

Нужно вывести все цифры, которые встречаются в ней и их количесиво
Доброго времени суток друзья! В общем нужно решить 6 задач. Кто может проявить инициативу? Естественно за вознаграждение. Вот: 5....

Строки. Вывести в алфавитном порядке все согласные, которые входят во все слова
Вводится не пустая строка из строчных русских букв, не более 79 символов. Определённые слова в ней разделены запятыми вывести в алфавитном...

Вывести все слова строки, которые встречаются в ней один раз
Помогите составить программу для: 1.Определить сумму ASCII-кодов символов, составляющих строку а$. Сформировать строку b$, состоящую...

Циклы: вывести все числа, расположенные между данными числами, в порядке убывания
Даны два целых числа A и B (A&lt;B).Вывести все числа, расположенные между данными числами ( не включая сами эти числа), в порядку их...

Множества: вывести на печать в алфавитном порядке все согласные, которые входят во все слова
Добрый день. Помогите пожалуйста исправить ошибки в следующей задаче: вводится непустая строка из строчных букв (меньше 79 символов),...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru