在看数据结构C算法(第二版)机械工业出版社的书时发现里的全排列算法不对,自己实现了一下,以下在
linux/gcc 环境下测试成功。在此留作笔记
/**author:livahu
***2006.11.23
***全排列算法
*/
#include <stdio.h>

#define SWAP(x, y, tmp) ((tmp) = (x), (x) = (y), (y) = (tmp))


void perm(char *, int, int);
int main(void)
{
char ch[] = "ABCD";
perm(ch, 0, 4);
}


void perm(char *list, int i, int n)
{
int j, tmp;
if (i == n - 1) {
printf("%s ", list);
} else {
for (j = i; j < n; j++) {
SWAP(list[i], list[j], tmp);
perm(list, i+1, n);
SWAP(list[i], list[j], tmp);
}
}
}
linux/gcc 环境下测试成功。在此留作笔记
/**author:livahu
***2006.11.23
***全排列算法
*/
#include <stdio.h>
#define SWAP(x, y, tmp) ((tmp) = (x), (x) = (y), (y) = (tmp))

void perm(char *, int, int);
int main(void)
{
char ch[] = "ABCD";
perm(ch, 0, 4);
}

void perm(char *list, int i, int n)
{
int j, tmp;
if (i == n - 1) {
printf("%s ", list);
} else {
for (j = i; j < n; j++) {
SWAP(list[i], list[j], tmp);
perm(list, i+1, n);
SWAP(list[i], list[j], tmp);
}
}
}

6671

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



