• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 基于排列与组合输出多少中情况详解

基于排列与组合输出多少中情况详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了排列组合例题详解,排列组合详解,列出所有排列组合情况,排列组合高考题,排列组合等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

排列

}
int main()
{
 int m=5,n=4;
 printf("%d",swap(5,4));

}
</div>

组合

计算3个A,2个B可以组成多少种排列的问题

思路一:

/*
  3个A,2个B 根据排列 第一个位置
  可以是A也可以是B 如A_ _ _ _ 或着 B_ _ _ _ 由于第一个位置
  确定了 一个字母 所以 如果确定的是A 则在剩下的四个位置中
  就只能有 2个A ,2个B了 所以总的情况就是 A_ _ _ _ +B_ _ _ _ 两个排列总数之和
*/
int f(int m, int n)
{
 if(m==0 || n==0) return 1;
    return f(m,n-1)+f(m-1,n);
}

void main ()
{ 
  printf("%d ",f(3,2));
}
</div>
思路二:

/*
       对于(m+n)!种排列方法是针对所有元素都不重复的情况下计算出的,
    如果存在重复,则需要筛选出这些重复的排列情况。
    于是我们可以采用捆绑法,将相同的元素绑在一起,由于是组合,所以内部元素的排列问题不予考虑,
    这些排列数总共有m!和n!,因此去掉这些重复情况后就得到(m+n)!/(m!*n!)中排法。

    m个A n个B的排列一共有(m+n)!/(m!*n!)
 而m-1个A n-1个B的排列一共有(m+n-2)!/((m-1)!*(n-1)!)
 所以m个A n个B的排列数=m-1个A n-1个B的排列数*(m+n)*(m+n-1)/(m*n) 

   关键是找到(m个A和n个B的排列)和(m-1个A和n-1个B)之间关系

*/
int f(int m, int n)
{
 if(m==0 || n==0) return 1;
    return f(m-1,n-1)*(m+n-1)*(m+n)/m/n;
}

void main ()
{ 
  printf("%d ",f(3,2));
}
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于排列与组合输出多少中情况详解

相关文章

  • 2017-05-28C语言实现最长递增子序列问题的解决方法
  • 2022-04-30在C语言中使用英文字符
  • 2017-05-28对比分析C语言中的gcvt()和ecvt()以及fcvt()函数
  • 2017-05-28C++ decltype类型说明符
  • 2017-05-28c语言随机数函数示例
  • 2017-05-28C语言中getopt()函数和select()函数的使用方法
  • 2017-05-28利用C语言实现2048小游戏的方法
  • 2017-05-28MFC绘制不规则窗体的方法
  • 2017-05-28Windows消息传递机制详解
  • 2017-05-28c语言合并两个已排序数组的示例(c语言数组排序)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 新手小心:c语言中强符号与弱符号的使用
    • 学习二维动态数组指针做矩阵运算的方法
    • floyd算法实现思路及实例代码
    • C 语言基础教程(我的C之旅开始了)[八]
    • c++运算符重载基础知识详解
    • 详解C++中的内联函数和函数重载
    • C语言函数语法详解
    • 详解state状态模式及在C++设计模式编程中的使用实例
    • Linux 软件看门狗 watchdog使用介绍
    • c/c++中变量的声明和定义深入解析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有