经典的回溯法,首先for循环固定住每一次回溯的开头,然后swap一下再递归,递归的方式就是后面每一个数字和开头调换。
#include<iostream>
using namespace std;
char letter[26];
void pailie(int cnt,int n){
if(cnt>=n){//出口
for(int i=0;i<n;i++){
cout<<letter[i];
}
cout<<endl;
}else{
for(int i=cnt;i<n;i++){
swap(letter[i],letter[cnt]);试着换一下
pailie(cnt+1,n);
swap(letter[i],letter[cnt]);//还原
}
}
}
int main(){
for(int i=0;i<26;i++){
letter[i]=97+i;//记住97是a
}
letter[26]='\0';
int n;
cin>>n;
pailie(0,n);
}