全排列的递归算法

#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;
}

 

posted on 2013-04-15 20:08  lzm风雨无阻  阅读(176)  评论(0编辑  收藏  举报

导航