void perm(int list[], int k, int m)
{
int i;
if(k == m)
{
for(i = 0; i <= m; i++)
printf("%d ", list[i]);
printf("\n");
n++;
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
{
int i;
if(k == m)
{
for(i = 0; i <= m; i++)
printf("%d ", list[i]);
printf("\n");
n++;
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
本文详细阐述了一种使用递归方法生成排列的算法实现过程,通过实例代码演示了如何生成给定序列的所有可能排列。
287

被折叠的 条评论
为什么被折叠?



