全排列的递归算法

#include <stdio.h>
void DFS(int arr[], int n, int visited[], int result[], int row)
{
if (row >= n)
{
for (int i = 0; i < n; i++)
{
printf("%d ", result[i]);
}
printf("\n");
return;
}
for (int i = 0; i < n; i++)
{
if (visited[i] == 0)
{
visited[i] = 1;
result[row] = arr[i];
DFS(arr, n, visited, result, row + 1);
visited[i] = 0;
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int n;
int a[20];
while(1)
{
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
a[i] = i + 1;
}
int reslut[20];
int visited[20] = {0};
DFS(a, n, visited, reslut, 0);
}
return 0;
}

原文地址:https://www.cnblogs.com/lzmfywz/p/3022744.html