⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 组合性质之范德蒙德恒等式的程序实现.txt

📁 c语言的一些常见的算法以及思考和改进的文章,写的很不错,花费了很大的精力从网络了搜罗的,希望大家喜欢.
💻 TXT
字号:
组合性质之范德蒙德恒等式的程序实现[原创] 
刚在书上看到一个组合的性质------范德蒙德恒等式,于是就写了个程序来验证一下。恒等式如下:

  C(m+n,r)=∑C(m,r-k)*C(n,k),k=0,1,2...r

/*
   To prove the property of combo
   C(m+n,r)=∑C(m,r-k)*C(n,k),k=0,1,2...r

   AUTHOR:BugEyes,http://BugEyes.blog.edu.cn
*/
long jiecheng(int n)
{/* to compute n!=n*(n-1)*(n-2)...*2*1 */
  long result=1;
  int i;
  if(n<0)
  {
    printf("error to compute \"n!\" because n<0");
    exit(-1);
  }
  for(i=1;i<=n;i++)
    result*=i;
  return result;
}

long combo(int n,int r)
{   /*to compute C(n,r)*/
  return (jiecheng(n)/jiecheng(r)/jiecheng(n-r));
}

long combo1(int n,int r)
{   /*a new method to compute C(n,r)*/

  long result=1;
  int i;
  for(i=n;i>0;i--)
    if(i>r&&i>(n-r))
      result*=i;
    else if(i<=r&&i>(n-r)||i<=(n-r)&&i>r)
      ;
    else if(i<=r&&i<=(n-r))
      result/=i;
  return result;
}

void main()
{
  int m,n,r;
  int i;
  long result1=0,result2=0;
  printf("Please input three digitals m,n,r,and insure r<=m&&r<=n\n");
  scanf("%d,%d,%d",&m,&n,&r);
  result1=combo1(m+n,r);/*result1=combo(m+n,r)*/
  for(i=0;i<=r;i++)
    result2+=combo1(m,r-i)*combo1(n,i);/*result2+=combo(m,r-i)*combo(n,i)*/
  printf("%ld,%ld",result1,result2);
  if(result1==result2)
    printf("OK");
  else
    printf("ERROR");
}

写的仓促,欢迎看过的朋友进行调试,并给出宝贵意见。另外,由于算法本身的限制,m和n的值不能太大。
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -