Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизПерестановки... Найти похожие ветки
← →
Chuvak © (2005-11-20 18:28) [0]Подскажите, как найти все возможные перестановки букв в строке x. Интересует реализация на языке Паскаль. хоть идею подкиньте, а то я чёт совсем запутался... По идее общее кол-во таких строк будет length(x)!...А вот как их все перебирать не врублюсь...
← →
Anatoly Podgoretsky © (2005-11-20 18:36) [1]Похоже на лабораторную, только вот не все условия указаны.
← →
Chuvak © (2005-11-20 18:47) [2]Anatoly Podgoretsky © (20.11.05 18:36) [1]
Вы правы, сэр...
меня иетересует сам алгоритм перестановки...
← →
TUser © (2005-11-20 19:26) [3]Не тестировал, может случайно троян получился. Так что код прочитай прежде чем запускать.
procedure PrintAll (S: string; Prefix: string = "");
var i: integer;
begin
if length(S) <= 1 then begin
writeln (Prefix + S);
exit;
end;
for i:=1 to length(S) do
PrintAll (copy(S,1,i-1)+copy(S,i+1,MaxInt),Prefix+S[i]);
end;
PrintAll ("any text");
← →
Chuvak © (2005-11-20 20:00) [4]TUser © (20.11.05 19:26) [3]
Спасибо, разобрался...
Насчёт трояна не смешно...
← →
Uncle Archi © (2005-11-20 21:09) [5]Самый лучший вариант, по-моему таков.
Он не содержит рекурсии и легко понимается.
Хотя долго работает.
Допустим, у нас есть строка длиной 4.
Представим число 0123 в системе счисления(СС) с основанием 4, сопоставив каждому числу знак из строки.
Теперь начинаем увеличивать число по правилам соответствующей СС.
Если нет одинаковых чисел, -> следующая перестановка.
Например:
0123
0130 - не подходит
0131 - не подходит
0132 - следующая
0213
0231
....
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.038 c