Разработайте алгоритм для вывода всех возможных перестановок символов в строке - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Разработайте алгоритм для вывода всех возможных перестановок символов в строке (считайте, что все символы используются только один раз).

Решение задачи: «Разработайте алгоритм для вывода всех возможных перестановок символов в строке»

textual
Листинг программы
  1. program z1;
  2. var s : string;
  3.     i, j, k, n, m, sfdadg : integer;
  4.     r : char;
  5. procedure qsort(low : integer; high : integer);
  6. var
  7.     m, t : char;
  8. begin
  9.   i := low; j := high; m := s[(i + j) shr 1];
  10.   repeat
  11.     while ord(s[i]) < ord(m) do inc(i);  
  12.     while ord(s[j]) > ord(m) do dec(j);
  13.     if (i <= j) then begin
  14.       t := s[i]; s[i] := s[j]; s[j] := t;
  15.       inc(i); dec(j);
  16.     end;
  17.   until (i > j);
  18.   if (low < j) then qsort(low, j);
  19.   if (i < high) then qsort(i, high);
  20. end;
  21.  
  22. function factorial(x : integer) : integer;
  23. var ans, l : integer;
  24. begin
  25.   ans := 1;
  26.   for l := 2 to x do
  27.     ans := ans * l;
  28.   factorial := ans;
  29. end;
  30.  
  31. begin
  32.   readln(s);
  33.   qsort(1, length(s));
  34.   k := 1;
  35.   n := length(s);
  36.   for sfdadg := 1 to factorial(n) do begin
  37.     writeln(s);
  38.     k := n - 1;
  39.     while (ord(s[k]) > ord(s[k + 1]))and(k > 1) do begin
  40.       k := k - 1;
  41.     end;
  42.     j := n;
  43.     while ord(s[k]) > ord(s[j]) do begin
  44.       j := j - 1;
  45.     end;
  46.    
  47.     r := s[k]; s[k] := s[j]; s[j] := r;
  48.     j := n;
  49.     m := k + 1;
  50.     while j > m do begin r := s[j]; s[j] := s[m]; s[m] := r; j := j - 1; m := m + 1 end
  51.   end;
  52. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы