По исходной перестановке вывести все циклы, которые в ней есть, в лексикографическом порядке - Pascal ABC
Формулировка задачи:
Решение задачи: «По исходной перестановке вывести все циклы, которые в ней есть, в лексикографическом порядке»
- 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.
Объяснение кода листинга программы
Программа Prg59 выводит все циклы в исходной перестановке, используя язык программирования Pascal ABC. Константа NMAX определяет максимальное количество элементов в массиве (до 100). Два массива P1 и P2 используются для хранения исходной и преобразованной перестановок соответственно. Переменные i и n представляют собой текущий элемент и количество элементов в перестановке соответственно. Процедура NextLoop выполняет следующий шаг в цикле: она обнуляет все элементы массива R, начиная с первого элемента, затем находит первый ненулевой элемент в массиве P и помещает его в начало массива R. Если такой элемент не найден, процедура завершается. Цикл while выполняется до тех пор, пока R[1] не станет равным нулю. На каждой итерации цикла while происходит чтение следующего элемента из массива P1, обнуление всех элементов массива R, начиная с первого элемента, и поиск первого ненулевого элемента в массиве P для помещения в начало массива R. Если R[1] становится равным нулю, цикл while завершается и программа переходит к следующему циклу while. В конце программы пользователю предлагается ввести число n, а затем программа запрашивает исходную перестановку. Затем происходит вывод преобразованной перестановки в лексикографическом порядке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д