打印全排列

来源:互联网 发布:python np.split 编辑:程序博客网 时间:2024/05/18 11:36
#include <iostream>using namespace std;void swap(char *p1, char *p2){char c = *p1;*p1 = *p2;*p2 = c;}void permute(char *pStr, char *pStart){char *p = NULL;static int i = 0;if('\0' == *pStart){cout << ++i << ":" << pStr << endl;}else{for(p = pStart; *p != '\0'; p++){swap(pStart, p);permute(pStr, pStart + 1);swap(pStart, p);}}}void printPermute(char *pStr){if(NULL == pStr)return;permute(pStr, pStr);}int main(){char str[] = "abcde";printPermute(str);return 0;}

        结果为:

1:abcde
2:abced
3:abdce
4:abdec
5:abedc
6:abecd
7:acbde
8:acbed
9:acdbe
10:acdeb
11:acedb
12:acebd
13:adcbe
14:adceb
15:adbce
16:adbec
17:adebc
18:adecb
19:aecdb
20:aecbd
21:aedcb
22:aedbc
23:aebdc
24:aebcd
25:bacde
26:baced
27:badce
28:badec
29:baedc
30:baecd
31:bcade
32:bcaed
33:bcdae
34:bcdea
35:bceda
36:bcead
37:bdcae
38:bdcea
39:bdace
40:bdaec
41:bdeac
42:bdeca
43:becda
44:becad
45:bedca
46:bedac
47:beadc
48:beacd
49:cbade
50:cbaed
51:cbdae
52:cbdea
53:cbeda
54:cbead
55:cabde
56:cabed
57:cadbe
58:cadeb
59:caedb
60:caebd
61:cdabe
62:cdaeb
63:cdbae
64:cdbea
65:cdeba
66:cdeab
67:ceadb
68:ceabd
69:cedab
70:cedba
71:cebda
72:cebad
73:dbcae
74:dbcea
75:dbace
76:dbaec
77:dbeac
78:dbeca
79:dcbae
80:dcbea
81:dcabe
82:dcaeb
83:dceab
84:dceba
85:dacbe
86:daceb
87:dabce
88:dabec
89:daebc
90:daecb
91:decab
92:decba
93:deacb
94:deabc
95:debac
96:debca
97:ebcda
98:ebcad
99:ebdca
100:ebdac
101:ebadc
102:ebacd
103:ecbda
104:ecbad
105:ecdba
106:ecdab
107:ecadb
108:ecabd
109:edcba
110:edcab
111:edbca
112:edbac
113:edabc
114:edacb
115:eacdb
116:eacbd
117:eadcb
118:eadbc
119:eabdc
120:eabcd

原创粉丝点击