当前位置:  编程技术>c/c++/嵌入式

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

    来源: 互联网  发布时间:2014-10-13

    本文导语:  排列 代码如下:#include // 主要是找到当前要排的 和后面要排数的关系int swap(int m,int n){ if(n==1)  return m-n+1; return  m*swap(m-1,n-1); }int main(){ int m=5,n=4; printf("%d",swap(5,4)); } 组合计算3个A,2个B可以组成多少种排列的问题 思路一: ...

排列

代码如下:

#include
// 主要是找到当前要排的 和后面要排数的关系
int swap(int m,int n)
{
 if(n==1)
  return m-n+1;
 return  m*swap(m-1,n-1);

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

}

组合

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

思路一:

代码如下:

#include

/*
  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));
}


思路二:
代码如下:

#include
#include

/*
       对于(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));
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python 排列组合之itertools
  • 急!!! Java面试时的一个排列组合问题
  • 要让某文件夹下的文件和文件夹名称竖向排列,有办法没?
  • 全排列算法的原理和实现代码
  • ls怎么才能让目录象dir/w那样横着排列?
  • pytyon 带有重复的全排列
  • 要访问mysql数据库中排列在最前面的5条数据,怎么班?
  • 排列组合?
  • C如何获取某文件中某一类型文件,且对其排列
  • python不带重复的全排列代码
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • C#实现排列组合算法完整实例
  • java 中文字符串数组按照音序排列
  • 体育彩票排列三组选三算法分享
  • 请教一个关于得到一个时间段内,按星期排列的日期的算法,请近来看看哦
  • 如何打印n(为任意)位数的所有排列组合?救命
  • 深入全排列算法及其实现方法
  • python使用递归解决全排列数字示例
  • 基于集合的子集与集合的全排列的相关问题
  • 一个字符串数组,怎样把它按照字母顺序排列。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3