Вопрос № 79607: Здравствуйте, уважаемые эксперты! Нам задали по информатике такое задание: сгенерировать все перестановки массива при любом заданном n.
ПОжалуйста, помогите сделать лабораторную!....:) SOS:)
Может быть на каком нибудь сайте омжно все это скач...
Вопрос № 79.607
Здравствуйте, уважаемые эксперты! Нам задали по информатике такое задание: сгенерировать все перестановки массива при любом заданном n.
ПОжалуйста, помогите сделать лабораторную!....:) SOS:)
Может быть на каком нибудь сайте омжно все это скачать?...в готовом виде....
Спасибо ВСЕМ!!!!
С уважением, Галя.
Отправлен: 24.03.2007, 12:09
Вопрос задала: Галя (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Устинов Сергей
Здравствуйте, Галя!
При любом заданном n это конечно весело :). Предлагаю ограничить пожелания каким-то разумным числом :). (при проверке программы не советую выбирать размер массива 10 и больше - будете ОЧЕНЬ ДОЛГО ждать окончания работы программы, так как в таком случае возможно 3628800 вариантов перестановок.)
program Project1;
const n=4; {размер массива - ограничен только параметрами компьютера, но советую больше 9 не выбирать...}
label 1;
var i,v,y,t,c:longint;
m,o:array[1..n] of integer;
otw:boolean;
{Собственно процедура получения следующей перестановки}
procedure perest(u:integer);
begin
o[u]:=o[u]+1;
if o[u]>n then begin
o[u]:=1;
perest(u-1);
end;
end;
begin {Вводим содержимое массива}
for i:=1 to n do begin
write(i,'-e chislo =');
o[i]:=i;
readln(m[i]);
end;
t:=1; {Считаем количество возможных перестановок}
for c:=1 to n do t:=t*c;
writeln; c:=1;
for c:=1 to t do begin {выводим текущую перестановку}
for i:=1 to n do write(m[o[i]],' ');
writeln; {получаем следующую перестановку}
1: perest(n); {проверяем, если в перестановке используется больше одного раза один и тот же элемент массива, то идем опять получать перестановку}
for v:=1 to n-1 do
for y:=v+1 to n do if o[v]=o[y] then goto 1;
end; {Ну и в конце выводим общее количество разных перестановок.}
writeln('Kolichestvo perestanovok=',t);
readln;
end.
Ответ отправил: Устинов Сергей (статус: Практикант)
Ответ отправлен: 24.03.2007, 16:01 Оценка за ответ: 5 Комментарий оценки: Огромное СПАСИБО!!!! Работа выполнена очень хорошо, быстро! Вы мне очень помогли! Даже комментарии есть! Несомненно ВЫСШИЙ БАЛЛ!!!