排列组合

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #define MAX 100 int factorial(int n); //缓存,空间换时间,动态规划思想 int fac[MAX]; int factorial(int n); int A(int,int); int C(int,int); int Z(int,int); int main(void) { printf("Hello World!\n"); printf("%d!=%d\n",5,factorial(5)); //A(n,m)=n×(n-1)....(n-m+1)=n!/(n-m)! //C(n,m)=P(n,m)/P(m,m) =n!/m!(n-m)! //Z(n,m)=C(n,n)*(c(n,1)+c(n,2)+...+c(n,m)) //n>=m>0 printf("A(5,2)=%d\n",A(5,2)); printf("C(5,2)=%d\n",C(5,2)); printf("Z(5,2)=%d\n",Z(5,2)); return 0; } // n! int factorial(int n){ return fac[n] = (n<=1||n>MAX)?1:(fac[n]?fac[n]:n*factorial(n-1)); } //A(5,3) int A(int n,int m){ return factorial(n)/factorial(n-m); } int C(int n,int m){ return A(n,m)/factorial(m); } int Z(int n,int m){ int sum = 0; for(int i=1;i<=m;i++){ sum += C(n,i); } return C(n,n)*sum; }
Editor Settings
Theme
Key bindings
Full width
Lines