题目:编写一个程序,使用递归算法输出一个一维字符数组中所有字符的全排列,假设字符都不一样。例如{'a','b','c'}的全排列为(a,b,c), (a,c,b), (b,a,c), (b,c,a), (c,a,b), (c,b,a)
输入:多组测试用例,每组输入一个正整数n(0<n<=26)。
输出:输出从a开始,连续n个字母的全排列,且每组输出之间用空格隔开。
样例输入:
1 2
样例输出:
a ab ba
c++代码 #include<bits/stdc++.h> using namespace std; void perm(char a[],int start,int end){ if(start==end){ for(int i=1;i<=end;i++){ cout<<a[i]; } cout<<endl; } else { for(int i=start;i<=end;i++){ swap(a[i],a[start]); perm(a,start+1,end); swap(a[i],a[start]); } } } int main(){ int n; char a[27]={'0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','l','s','t','u','v','w','x','y','z'}; while(cin>>n){ perm(a,1,n); cout<<endl; } return 0; }