全排列
全排列的应用很广,比如路径全部输出
以前一直用递归写的全排列,今天发现可以用C++ STL 实现
//递归方法 #include<iostream> #include<cstdio> #include<math.h> using namespace std; char a[10]; int n; void fuck(char *b,int k) { if(k>=n-1){ for(int i=0;i<n;i++) cout<<b[i]<<ends; cout<<endl; } else{ for(int i=k;i<n;i++){ char temp=b[i]; b[i]=b[k]; b[k]=temp; fuck(b,k+1); temp=b[i]; b[i]=b[k]; b[k]=temp; } } } int main() { cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } fuck(a,0); return 0; } STL 方法 #include<iostream> #include<cstdio> #include<math.h> #include<algorithm> using namespace std; void permutation(char* str,int length) { sort(str,str+length); do { for(int i=0;i<length;i++) cout<<str[i]; cout<<endl; }while(next_permutation(str,str+length)); } int main() { char str[100]; scanf("%s",str); permutation(str,3); return 0; }