时限:100ms 内存限制:10000K 总时限:300ms
描述
输入一个小于10的正整数n,按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入
输入一个小于10的正整数n。
输出
按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入样例
3
输出样例
abc
acb
bac
bca
cba
cab
#include<iostream>
using namespace std;
void search(int m);
void output();
void swap(int m, int i);
char abc[10] = { 'a','b','c','d','e','f','g','h','i','j' };
int n;
int main() {
cin >> n;
search(0);
}
void search(int m) {
if (m > n-1)
output();
for (int i = m; i < n; i++) {
swap(m, i);
search(m + 1);
swap(m, i);
}
}
void swap(int m, int i) {
char tmp;
tmp = abc[i];
abc[i] = abc[m];
abc[m] = tmp;
}
void output() {
for (int i = 0; i < n; i++)
cout << abc[i];
cout << endl;
}