zoukankan      html  css  js  c++  java
  • 字符串的全排列

    我们以三个字符abc 为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc 的排列。当两个字符bc 的排列求好之后,我们把第一个字符a 和后面的b交换,得到bac,接着我们固定第一个字符b,求后面两个字符ac 的排列。现在是把c 放到第一位置的时候了。记住前面我们已经把原先的第一个字符a 和后面的b 做了交换,为了保证这次c 仍然是和原先处在第一位置的a 交换,我们在拿c 和第一个字符交换之前,先要把b 和a 交换回来。在交换b 和a 之后,再拿c 和处在第一位置的a 进行交换,得到cba。我们再次固定第一个字符c,求后面两个字符b、a 的排列。既然我们已经知道怎么求三个字符的排列,那么固定第一个字符之后求后面两个字符的排列,就是典型的递归思路了。

    #include<iostream>
    using namespace std;
    void permutation(char *pstr,char *pbegin)
    {
    	if(!pstr||!pbegin)return;
    	if(*pbegin=='\0')cout<<pstr<<endl;
    	else
    	{
    		for(char *pch=pbegin;*pch!='\0';++pch)
    		{
    			char temp=*pch;
    			*pch=*pbegin;
    			*pbegin=temp;
    			permutation(pstr,pbegin+1);
    			temp = *pch;
    			*pch = *pbegin;
    			*pbegin = temp;
    		}
    	}
    }
    int main()
    {
    	char pstr[10];
    	while(cin>>pstr)
    	{
    		permutation(pstr,pstr);
    	}
    	return 0;
    }
    
  • 相关阅读:
    Maven 安装配置
    docker 安装 MySQL
    查看CentOS版本方法
    JavaScript定时器的开启关闭
    JavaScript实现延时提示框
    JavaScript获取当前时间
    JavaScript实现数字时钟功能
    JavaScript获取非行间样式
    JavaScript数组的操作
    JavaScript数组和json的区别
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/2736242.html
Copyright © 2011-2022 走看看