1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//n个元素的全排列
#include "stdio.h"
#define N 3
void
fun(
char
ch[],
int
k){
//k: 当前的交换位置(关注点), 与其后的元素交换
int
i;
char
t;
if
(k==N){
for
(i=0; i<N; i++)
printf
(
"%c "
, ch[i]);
printf
(
"\n"
);
}
for
(i = k; i < N; i++){
t = ch[k]; ch[k]=ch[i]; ch[i]=t;
//试探
fun(ch, k+1);
t = ch[k]; ch[k]=ch[i]; ch[i]=t;
//回溯
}
}
int
main(){
char
ch[N]={
'A'
,
'B'
,
'C'
};
fun(ch, 0);
return
0;
}
/*======================
智商有限,想了好久才理清楚。
应该还有更好的办法。
注意ch[3]="ABC"与ch[3]={'A','B','C'}区别 */
|
转载于:https://www.cnblogs.com/startnow/p/5055572.html