Problem G
穷举所有排列
时限:100ms 内存限制:10000K 总时限:300ms
描述:
输入一个小于10的正整数n,按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入:
输入一个小于10的正整数n。
输出:
按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入样例:
3
输出样例:
abc
acb
bac
bca
cba
cab
#include<iostream>
#include<string.h>
using namespace std;
int n;
char a[11];
bool vis[11];
void display()
{
for (int i = 0; i < n; ++i)
{
cout<<a[i];
}
cout<<endl;
}
void search(int k)
{
if(k==n) display();
else
{
for (int i = k; i < n; ++i)
{
swap(a[i],a[k]);
search(k+1);
swap(a[i],a[k]);
}
}
}
void init()
{
for (int i = 0; i < n; ++i)
{
a[i]='a'+i;
}
}
int main(int argc, char const *argv[])
{
cin>>n;
init();
search(0);
return 0;
}