Помощь - Поиск - Пользователи - Календарь
Полная версия: перестановки.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
bobik
Дана перестановка. Найдите число циклов в ней.

Входные данные
Число N (1 <= N <= 10000), затем перестановка.

Выходные данные
Выведите ответ.
и еще:
Дана перестановка. Наименьшее число обменов, чтобы ее отсортировать.

Входные данные
Число N (1 <= N <= 10000), затем перестановка.

Выходные данные
Выведите ответ.

Желателен код.
virt
program perestanovka;
var n : integer;
a : array[1..2,1..10000]of integer;
i : integer;
b : array[1..10000]of boolean;
c : integer;

procedure getcycle(ii : integer);
begin
b[ii] := false;
if b[a[2,ii]] then getcycle(a[2,ii]);
end;

begin
fillchar(b,sizeof(b),true);
read(n);
for i := 1 to n do read(a[1,i]);
for i := 1 to n do read(a[2,i]);
c := 0;
for i := 1 to n do
if b[i] then
begin
c := c + 1;
getcycle(i);
end;
writeln©;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.