算法实验一【穷举所有数列】(回溯算法)
1324.穷举所有排列
时限:100ms 内存限制:10000K 总时限:300ms
描述
输入一个小于10的正整数n,按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入
输入一个小于10的正整数n。
输出
按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入样例
3
输出样例
abc
acb
bac
bca
cba
cab
#include<iostream>
using namespace std;
int n;
char a[10]={'a','b','c','d','e','f','g','h','i','j'};
void dfs(int m);
int main()
{
cin>>n;
dfs(0);
return 0;
}
void dfs(int m)
{
int i;
if(m==n)
{
for(i=0;i<n;i++)
cout<<a[i];
cout<<endl;
}
else
{
for(i=m;i<n;i++)
{
swap(a[m],a[i]);
dfs(m+1);
swap(a[m],a[i]);//记得把两个数的位置换回来
}
}
}
10.16算法复习