Перестановки в массиве
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Мне нужно сделать все возможные перестановки элементов в массиве ,без повторений,...как это выполнить?
Только приветствую,хотя в синтаксисе "с" не разбираюсь,ну да ладно)))
нет-нет)) Все возможные комбинации,можно и не выводить на экран...количество комбинаций в массиве бедт не N))
Пример: 123
213
231
321
312
132 число комбинаций из определенного числа элементов будет равно N! .... В Pascal это делается как-то с помощью рекурсии или множеств,не помню....
Пример: 123
213
231
321
312
132 число комбинаций из определенного числа элементов будет равно N! .... В Pascal это делается как-то с помощью рекурсии или множеств,не помню....
Ошибаетесь, это как раз и будет N-факториал. Даже в вашем примере - 3 числа дают 6 вариантов. 3! = 6.
Любое количество перестановок равно N!--я это и написал))
Никто не знает вроде...
Никто не знает вроде...
-
- Сообщения: 55
- Зарегистрирован: 03 май 2004, 11:58
- Откуда: Санкт-Петербург
- Контактная информация:
Возможно что-то я не понял, но вся проблема в расчете факториала? Тогда такой нехитрый текст. Компилятора нету, Паскаль не мой язык, но все должно работать.
Если нужно рассчитать число комбинаций N из общего числа m, то есть формула
C=m!/(N!*(m*N)!)
На этом основываются некоторые статистические методы, например критерий рандомизации. Он у меня есть, реализованный на С. Тоже не ахти чего сложного, но на Паскаль переводить не буду.
Код: Выделить всё
Program Facktorial;
uses crt;
var
R:integer;
procedure Factorial(n:integer);
var i,s:integer;
begin
s:=1;
for i:=1 to n do {вот реализуется формула n!}
begin
s:=s*i;
end;
writeln('Factorial ->',s); {выводится результат}
end;
BEGIN {начало основной программы}
clrscr;
write('Vvedite chislo: '); введите число для кот. нужно рассчитать факториал
read(R);
Factorial(R);
readln;
Writeln('Press to <ENTER>');
readln;
END.
C=m!/(N!*(m*N)!)
На этом основываются некоторые статистические методы, например критерий рандомизации. Он у меня есть, реализованный на С. Тоже не ахти чего сложного, но на Паскаль переводить не буду.
