字符串的排列算法分解为两部分,第一部分是第一个字符,第二部分是剩下的字符,剩下的字符有可以用类推的方法分为两个部分,很显然用递归可以实现,以下是我测试过的代码:
#include <iostream> #include <string.h> #include <fstream> #include <stack> #include <exception> using namespace std; void swap(char &c1,char &c2) { char temp=c1; c1=c2; c2=temp; } void pailie(char *str,int start,int len) { if(start==len) { for(int i=0;i<len;i++) { cout<<str[i]; } cout<<endl; }else { for(int index=start;index<len;index++) { swap(str[index],str[start]); pailie(str,start+1,len); swap(str[index],str[start]); } } } int main() { char sample[]="abcd"; pailie(sample,0,strlen(sample)); getchar(); return 0; }