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

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

程序代码如下:

#include

#include

char array[] = "abcd";

#define N 4

#define M 3

int queue[N] = {0};

int top = 0;

int flag[N] = {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语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例相关推荐

  1. c语言排列组合的函数,c语言排列组合算法 排列和组合算法的实现方法_C语言经典案例...

    想了解排列和组合算法的实现方法_C语言经典案例的相关内容吗,在本文为您仔细讲解c语言排列组合算法的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:c语言排列组合算法,下面大家一起来学习吧. ...

  2. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  3. 两种排序方法(直接判断)

    题目描述 考拉有n个字符串字符串,任意两个字符串长度都是不同的.考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序.例如: "car" < "car ...

  4. 使用Navicat和Transact-SQL语言两种方法创建、修改和删除表

    修改基本表 数据库db100里 向employee中添加地址列 Mysql>alter table employee add address char(50); 增加课程名称必须取唯一值的约束条 ...

  5. 【字符串2】(删除公共字符、合法括号序列判断、两种排序方法、密码强度等级)

    字符串题集 1. 删除公共字符 题目描述 题目分析 C++代码 2. 合法括号序列判断 题目描述 题目分析 C++代码 3. 两种排序方法 题目描述 题目分析 C++代码 4. 密码强度等级 题目描述 ...

  6. 刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

    目录 选择题模块 1. 以下对继承的描述错误的是(A) 2. 在Java中,一个类(B) 3. 以下不是Object 类的方法的是(D) 4. Test.main() 函数执行后的输出是(D) 编程题 ...

  7. python 两种排序方法 sort() sorted()

    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...

  8. Java两种排序方式快慢比较

    2019独角兽企业重金招聘Python工程师标准>>> Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类, 一个是运行程序的Main类,另 ...

  9. day06-元组字典集合常用两种排序

    Day06-元组&字典&集合&常用两种排序 一.tuple元组 1.概述 和列表相似,本质上是一种有序的集合 元组和列表的不同之处: ​ a.列表:[ ] 元组:( ) ​ b ...

最新文章

  1. 需要排序的最短子数组的长度——是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组...
  2. WF4 持久化 第四篇
  3. 与时间赛跑:微盟的数据恢复为什么需要这么长时间
  4. Unity Text 插入超链接
  5. PHP超级全局变量总结
  6. 机器学习——对三种模式的看法
  7. 应该用怎样的态度对待孩子?
  8. 总体和样本、统计量和抽样分布
  9. R语言:企业风险分析(2)【蒙特卡罗模拟,Monte-Carlo Simulation】
  10. STATA画图命令(一)
  11. edge启动页北hao123流氓绑定的其中一个解决方法
  12. 免费PHPCMS采集规则文章采集器采集百万数据
  13. 不带HDMI的PD HUB方案深度解析(LDR6023A)性价比极高的充电数据方案
  14. PDF转图片哪个格式最清晰?PDF转高清图片的方法
  15. Faceless —— 开源的匿名社交应用
  16. 2345浏览器劫持主页解决办法
  17. 最全的Java版本历史
  18. mysql的安装后;Navicat连接出现1103详细解决方式
  19. 路在脚下、梦在身上,技能提升不是为了别人!
  20. 这样的简历,到哪里都是被淘汰的命!

热门文章

  1. MindManager: Draw your own MindMap!
  2. 用Selenium自动化测试时,让ChromeDriver中不显示“正受到自动测试软件控制”
  3. C#内存泄露与资源释放 经验总结
  4. 为什么我的SQL server 在附加数据库后,数据库总是变成了只读?
  5. nginx html 替换,Nginx 服务内容替换功能(sub模块)
  6. oracle 11gr2 bbed 安装,oracle11gR2 安装bbed工具
  7. python计算和差积商_Python与处理计算的区别
  8. 通过nginx访问.html出现Access Denied提示怎么解决(亲测)
  9. PHP的替换strstr strtr str_replace substr_replace
  10. 项目管理指标_企业信息化——项目管理