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 0000000000000000000000000000000000000000..7d9ac8440e06c529c689166d524fe22b95cc9ea0 --- /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 0000000000000000000000000000000000000000..dc654be061117cc798e7cf5bc99f95af9ffef883 --- /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 0000000000000000000000000000000000000000..f2ba8f84ab5c1bce84a7b441cb1959cfc7093b7f --- /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 0000000000000000000000000000000000000000..9ae9e86b7bd6cb1472d9373702d8249973da0832 --- /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