首页 > 代码库 > 全排列

全排列

一种全排列是将n个数字放入n个位置里,一种是n个位置上任意位置都可以取0,1,2,...,m,位置之间没有约束

#include <iostream>using namespace std;void permutation(char *pStr, char *pBegin, int &count){    if (*pBegin == \0){        printf("%s\t", pStr);        count++;    }else{        for (char *pCh = pBegin; *pCh != \0; ++pCh){                            char temp1 = *pCh;                *pCh = *pBegin;                *pBegin = temp1;                        permutation(pStr, pBegin + 1,count);                            temp1 = *pCh;                *pCh = *pBegin;                *pBegin = temp1;                    }    }}int main(){    char pS[] = "123456";    int count = 0;    permutation(pS, pS, count);    printf("%d", count);    system("pause");}#include <iostream>using namespace std;void permutation(char *pStr, char *pBegin, int &count){        if (*pBegin == \0){            printf("%s\t", pStr);            count++;        }else{            for (int i = 0; i < 10;i++){                                *pBegin = i + 0;                                permutation(pStr, pBegin + 1,count);                                                        }        }    }int main(){    const int n = 3;    int count = 0;    char *pStr = new char[n+1];    pStr[n] = \0;    pStr[0] = pStr[1] = pStr[2] = 0;    permutation(pStr, pStr, count);    printf("%d\n", count);    delete[]pStr;    system("pause");}

 

全排列