您的位置:首页 > 编程语言 > C语言/C++

排列和组合算法的实现方法_C语言经典案例

2016-09-25 19:46 741 查看

排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现。

本人在经过多次摸索和思考之后,总结如下,以供参考。

程序代码如下:

#include <stdio.h>
#include <stdlib.h>
char array[] = "abcd";
#define N 4
#define M 3
int queue
 = {0};
int top = 0;
int flag
 = {0};
void perm(int s, int n)
{
int i;
if (s > n)
{
return;
}
if (s == n)
{
for (i = 0; i < n; i++)
{
printf("%c", queue[i]);
}
printf("\t");
return ;
}
for (i = 0; i < n; i++)
{
if (flag[i] == 0)
{
flag[i] = 1;
queue[s] = array[i];
perm(s+1, n);
flag[i] = 0;
}
}
}
void comb(int s, int n, int m)
{
int i;
if (s > n)
return ;
if (top == m)
{
for (i = 0; i < m; i++)
{
printf("%c", queue[i]);
}
printf("\t");
return ;
}
queue[top++] = array[s];
comb(s+1, n, m);
top--;
comb(s+1, n, m);
}
int main()
{
printf("\nperm():\n");
perm(0, N);
printf("\ncombination():\n");
comb(0, N, M);
printf("\n");
return 0;
}

运行结果:

perm():
abcd  abdc  acbd  acdb  adbc  adcb  bacd  badc  bcad  bcda
bdac  bdca  cabd  cadb  cbad  cbda  cdab  cdba  dabc  dacb
dbac  dbca  dcab  dcba
combination():
abc   abd   acd   bcd

以上就是小编为大家带来的排列和组合算法的实现方法_C语言经典案例的全部内容了,希望对大家有所帮助,多多支持脚本之家~

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 排列 组合 算法