代碼:
//
// main.cpp
// DFS——全排列
//
// Created by showlo on 2018/4/14.
// Copyright © 2018年 showlo. All rights reserved.
//輸出從1到N的全排列
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
int N,k,num;
int a[1000];
int dfs(int k){
int i,j,flag;
if (k==N+1) {
num++;
printf("Case %d:\n",num);
for (i=1; i<=N; i++) {
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
else{
for (j=1; j<=N; j++) {
flag=1;
a[k]=j;
for (i=1; i<k; i++) {
if (a[i]==a[k]) {
flag=0;
break;
}
}
if (flag) {
dfs(k+1);
a[k]=0;
}
}
}
return num;
}
int main() {
while(scanf("%d",&N)){
memset(a, 0, sizeof(a));
num=0;
dfs(1);
}
return 0;
}