#include <stdio.h>
#define N 3
int track[N];
int chooseList[N] = {1, 2, 3};
int trackContains(int n, int *track){
int i;
for (i = 0; i < N; i++){
if (track[i] == n){
return 1;
}
}
return 0;
}
void backTrack(int step, int *track, int *chooseList){
int i;
if (step >= N){
for (i = 0; i < N; i++){
printf("%d", track[i]);
}
printf("\n");
return ;
}
for (i = 0; i < N; i++){
//排除已经选择的
if (trackContains(chooseList[i], track)){
continue;
}
//做出选择
track[step] = chooseList[i];
//进入下一层决策树
backTrack(step + 1, track, chooseList);
//取消选择
track[step] = 0;
}
}
int main(){
backTrack(0, track, chooseList);
return 0;
}
回溯算法--全排列
最新推荐文章于 2023-05-23 09:41:45 发布