#include <iostream>
using namespace std;
void Permutation_core(char *str,char *flag){
if(*flag=='\0')
cout<<str<<' ';
else{
for(int i=0;flag[i]!='\0';++i){
char tmp=*flag;
*flag=flag[i];
flag[i]=tmp;
Permutation_core(str,1+flag);
tmp=*flag;
*flag=flag[i];
flag[i]=tmp;
}
}
}
void Permutation(char *str){
if(str==NULL) return;
Permutation_core(str,str);
}
int main(){
char str[10]={"abcd"};
Permutation(str);
}
从n个字符取m个
#include <iostream>
#include <cstring>
using namespace std;
void combination(char *strn,char *strm,int flag,const int m){
if(*strn=='\0'||flag==m){
if(flag==m){
for(int i=0;i<m;++i)
cout<<strm[i];
cout<<endl;
}
else
return;
}
else{
strm[flag]=*strn;
combination(strn+1,strm,flag+1,m);
combination(strn+1,strm,flag,m);
}
}
int main(){
char strn[]={"asdf"};
char strm[strlen(strn)+1];
combination(strn,strm,0,2);
}