T1:无重复数字的全排列
【题目描述】
输入 n(<=11),按从小到大输出数字 1 到 n 个的全部排列。
【样例输入】
3
【样例输出】
1:1 2 3
2:1 3 2
3:2 1 3
4:2 3 1
5:3 1 2
6:3 2 1
====================================================
T2:无重复元素的全排列
【题目描述】
输入 n(<=11)个不同字符,按 ASCII 值从小到大输出 n 个字符的全部排列。
【样例输入】
abc
【样例输出】
1:a b c
2:a c b
3:b a c
4:b c a
5:c a b
6:c b a
===================================================
T3:有重复元素的全排列
【题目描述】
输入 n(<=10)个小些字母(可能重复),按从小到大输出输出 n 个字符的全部排列。
【样例输入】
abaab
【样例输出】
1:aaabb
2:aabab
3:aabba
4:abaab
5:ababa
==================题解================
用递归来取代多重循环。
bool vis数组记录是否取过此值,用一个变量来控制递归深度,开一个临时数组存储结果,每次更新这个数组,进函数时先判断深度,若深度==n,则输出数组中的值,return;之后进循环,先判断是否取过,若未取过则更新临时数组后递归到下一层。