From 2796c97ed43341ca96a5185db5cc4a45feb46603 Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Fri, 24 Feb 2023 17:51:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=85=A8=E6=8E=92?= =?UTF-8?q?=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exercises.md" | 36 +++++++++++++++++++ .../solution.py" | 21 +++++++++++ .../test/1.in" | 1 + .../test/2.in" | 1 + 4 files changed, 59 insertions(+) create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/exercises.md" create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/solution.py" create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/1.in" create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/2.in" diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/exercises.md" "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/exercises.md" new file mode 100644 index 0000000..7d9ac84 --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/exercises.md" @@ -0,0 +1,36 @@ +# 全排列 + +定义: + +* 排列 (P(n, m)))(英语:Permutation)是将相异物件或符号根据确定的顺序重排。每个顺序都称作一个排列 +* P(n, n) 称为全排列 + +问题:假设有一个短字符串,没有重复字符,并且都是英文字母。我们现在要写一个程序,生成其字符的全排列。 + +## 输入描述 + +输入一个字符串 + +## 输出描述 + +输出所有排列,每行一个 + +## 输入样例 + +abc + +## 输出样例 + +abc + +acb + +bac + +bca + +cab + +cba + +## 提示 diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/solution.py" "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/solution.py" new file mode 100644 index 0000000..dc654be --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/solution.py" @@ -0,0 +1,21 @@ +def permutation(data): + if len(data) < 2: + yield data + return + + if len(data) == 2: + yield data + yield data[1]+data[0] + return + + for i in range(len(data)): + element = data[i] + sub = data[:i] + data[i+1:] + for token in permutation(sub): + yield element + token + +if __name__ == "__main__": + word = input("input:") + for line in permutation(word): + print(line) + diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/1.in" "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/1.in" new file mode 100644 index 0000000..f2ba8f8 --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/1.in" @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/2.in" "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/2.in" new file mode 100644 index 0000000..9ae9e86 --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\345\205\250\346\216\222\345\210\227/test/2.in" @@ -0,0 +1 @@ +ab \ No newline at end of file -- GitLab