排列
复制代码 代码如下:
#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 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
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));
}



