一种全排列是将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"); }
//一种是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 (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"); }