面试题28字符串的排列

根据书本的内容,采用递归实现
对一个字符串abc,看成第一个元素,和后面两个部分
再将后面看成第一个元素和后面两个部分

eg:abc
先外层循环,a,b,c分别调整到数组第一位
对第一位后面的部分采用递归操作
直到begin为最后一项时,输出

1
void getPermutation(vector<string> &a,int begin){ 2 if(begin==a.size()-1){ 3 for(int j=0;j<a.size();++j){ 4 cout<<a[j]; 5 } 6 cout<<endl; 7 } 8 else{ 9 for(int i=begin;i<a.size();++i){ 10 swap(a[i],a[begin]); 11 getPermutation(a,begin+1); 12 swap(a[i],a[begin]); 13 } 14 } 15 }

 

posted @ 2015-06-06 16:46  影翕  阅读(142)  评论(0编辑  收藏  举报