Разработайте алгоритм для вывода всех возможных перестановок символов в строке - PascalABC.NET
Формулировка задачи:
Разработайте алгоритм для вывода всех возможных перестановок символов в строке (считайте, что все символы используются только один раз).
Решение задачи: «Разработайте алгоритм для вывода всех возможных перестановок символов в строке»
textual
Листинг программы
program z1; var s : string; i, j, k, n, m, sfdadg : integer; r : char; procedure qsort(low : integer; high : integer); var m, t : char; begin i := low; j := high; m := s[(i + j) shr 1]; repeat while ord(s[i]) < ord(m) do inc(i); while ord(s[j]) > ord(m) do dec(j); if (i <= j) then begin t := s[i]; s[i] := s[j]; s[j] := t; inc(i); dec(j); end; until (i > j); if (low < j) then qsort(low, j); if (i < high) then qsort(i, high); end; function factorial(x : integer) : integer; var ans, l : integer; begin ans := 1; for l := 2 to x do ans := ans * l; factorial := ans; end; begin readln(s); qsort(1, length(s)); k := 1; n := length(s); for sfdadg := 1 to factorial(n) do begin writeln(s); k := n - 1; while (ord(s[k]) > ord(s[k + 1]))and(k > 1) do begin k := k - 1; end; j := n; while ord(s[k]) > ord(s[j]) do begin j := j - 1; end; r := s[k]; s[k] := s[j]; s[j] := r; j := n; m := k + 1; while j > m do begin r := s[j]; s[j] := s[m]; s[m] := r; j := j - 1; m := m + 1 end end; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д