IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> перестановки.
bobik
сообщение 12.11.2005 19:33
Сообщение #1


Гость






Дана перестановка. Найдите число циклов в ней.

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

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

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

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

Желателен код.
 К началу страницы 
+ Ответить 
virt
сообщение 18.11.2005 20:37
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


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.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.06.2025 17:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"