zoukankan      html  css  js  c++  java
  • 全排列问题--剑指offer28

    求全排列的步骤(两步,无重复字符的情况):

    1.求出所有可能在第一个位置的数组,即吧第一个字符和后面的所有字符交换。

    2.固定第一个字符,求后面所有字符的全排列。第2步中的全排列求解用到递归。

      此时,仍把后面的所有字符分成两部分,后面字符的第一个字符,以及这个字符之后的所有字符。然后把第一个字符注意和他后面的字符交换。

    全排列就是从第一个数字起每个数分别与它后面的数字交换

    全排列可以用在求解8皇后问题,

    以及输入一个含有8个数字的数组,判断有没有可能把这8个数字分别放在正方体的8个顶点上,使得正方体上三组相对的面上的四个顶点的和都相等。


    #include <iostream>
    using namespace std;
    
    void Permutation(char *pStr)
    {
    	if(pStr == NULL)
    		return;
    	Permutation(pStr,pStr);
    }
    
    
    void Permutation(char *pStr, char *pBegin)
    {
    	if(*pBegin == '')
    	{
    		printf("%s
    ",pStr);
    	}
    	else
    	{
    		for(char *pCh = pBegin; *pCh != ''; ++pCh)
    		{
    			swap(*pCh,*pBegin);
    			Permutation(pStr, pBegin + 1);
    			swap(*pCh,*pBegin);
    		}
    	}
    }
    


  • 相关阅读:
    自动生成小学四则运算题目
    python自动生成小学四则运算题目
    大学排名
    中国大学排名
    pachong
    paiqiu
    文件管理
    软件工程课作业 2020-11-23
    时序图,E-R图,数据流程图
    考研信息查询系统需求规格说明书
  • 原文地址:https://www.cnblogs.com/cnsec/p/3789809.html
Copyright © 2011-2022 走看看