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

2016-02-19 09:17 4 1 收藏

有了下面这个基于排列与组合输出多少中情况详解教程,不懂基于排列与组合输出多少中情况详解的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - 编程语言 】

排列
代码如下:

#include stdio.h
// 主要是找到当前要排的 和后面要排数的关系
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));

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

}

组合

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

思路一:
代码如下:

#include stdio.h

/*
  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 stdio.h
#include math.h

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

来源:http://www.tulaoshi.com/n/20160219/1590227.html

延伸阅读
有人在Quake III的源代码里面发现这么一段用来求平方根的代码: /*================SquareRootFloat================*/ float SquareRootFloat(float number) {     long i;     float x, y;     const float f = 1.5F;     x = number * 0.5F;     y  = nu...
标签: 手机游戏 IOS
《唐门》英雄组合技巧详解 《唐门》的玩家都积极了呢?有没有在游戏中遇到神马情况呢?等级上不去或者是英雄的选择上遇到困难了呢?其实很多问题都是由于武将啊或者那些的,下面图老师图老师小编就为大家来说说唐门中的武将问题! 武将 我们可以看到武将的等级是1~5星的等级,随着你的等级的提升,英雄获得的也是很多的途径,最直接的是能够...
  也许一个开发人员一半以上的时间都是在面对错误,所以好的调试/查错方法(工具)会减轻我们工作的负担,也可以让枯燥的DEBUG过程得以缩短。 VC开发环境所提供的调试环境是很优秀的,我们可以运用单步运行,设置断点的方法来查找问题所在。但是这种跟踪是非常耗时的,所以我们需要采用一些策略来让我们更容易的发现错误并对错...
举例: =================================================== 代码如下: /** INITRM - Initialization of internal ram position register; 0x0000 0010 **/ typedef union {    byte Byte;    struct {       byte RAMHAL :1;       byte :1;   &nb...
标签: 手机游戏 IOS
《实况俱乐部》所有阵型排列详解 各有优劣 《实况俱乐部》中阵型对于每个玩家都是一个说不出的痛!我们是不是每每被不知道选择什么阵型而搞的心烦意乱?我们是不是每因为选错阵型而被对手逼平,反超?每当这种事情发生的时候,就特别想知道我们错在哪儿了?大家都想赢的清楚,输的明白。今天图老师图老师小编就为大家带来《实况俱乐部》所有阵...

经验教程

569

收藏

31
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部