排列组合算法:n个元素的全排列算法



/*
* 输出n个元素全排列
*/

# <stdio.h>

void arrange(char *s, k, m);
void swap(char *s1, char *s2);

(void)
{
n;
i;
char *;

prf("Please input the number of elements (>=0): ");
scanf("%d", &n);
(n <= 0) {
prf("WARN! The number should be >= 1!\n");
exit(0);
}

= (char *)calloc(n, (char)); /* 分配存放集合元素空间 */
(!) {
prf("Sorry! Not enough memory!\n");
exit(0);
}



/* 读取元素 , 限制了输入格式 */
prf("Please input the elements ('X X X ...'):\n\t");
for (i = 0; i < n; i)
/* Notice the '%ls' : get the next non-blank character */
scanf("%ls", &[i]);

prf("The is: {");
for (i = 0; i < n - 1; i)
prf("%c, ", [i]);
prf("%c}\n", [i]);

prf("All arragnement is as follows:\n");
arrange(, 0, n-1);

free();

getchar; /* 防止输出窗口闪关闭 */
getchar;

0;
}

void arrange(char *s, k, m)
{
i;

(k m) {
prf("\t");
for (i = 0; i <= m; i)
prf("%c", s[i]);
prf("\n");
} {
for (i = k; i <= m; i) {
swap(&s[k], &s[i]);
arrange(s, k + 1, m);
swap(&s[k], &s[i]);
}
}
}

void swap(char *s1, char *s2)
{
char temp = *s1;
*s1 = *s2;
*s2 = temp;
}
Tags:  排列算法 全排列算法 排列组合的算法 排列组合算法

延伸阅读

最新评论

发表评论