Всем привет... Мне очень нужна ваша помощь . У меня тут одна задачка никак не могу решить . Во всех поисковиках искал . Пермутацию сделал а эту никак не могу
Задача такая:
Задано число(можно и прочесть в виде строки) . Требуеться вывести на экран все числа получившиеся перестановками цифр в этом числе.
Ключевые моменты:
1) если есть одинаковые цифры то вывести перестановку обоих
Например если задано 122 то надо вывести 122 122 223 232 322 322
2) если в заданном числе есть цифра 0 то вывести и ее перестановку
Например если задано число 103 то надо вывести 013 031 103 130 301 310
Помогите мне пожалуйста найти алгоритм и решение этой задачи
Ой извиняюсь за ошибочку...
В FAQ-е лежит программа: http://forum.pascal.net.ru/index.php?s=&showtopic=3777&view=findpost&p=52823 для получения всех перестановок... Изменяешь в ней:
{ Глобальная переменная }
var s: string;
...
procedure output;
var i: integer;
begin
writeln;
for i:=1 to n do write(s[a[i]],' '); { <-- Добавляешь вывод по индексу }
end;
...
begin
write('Введите исходное число: '); readln(s);
n := length(s);
fillchar(a, sizeof(a), 0);
... { Все остальное - без изменений }
end.