排列組合c的計算方法 C語言如何實現(xiàn)任意數(shù)全組合?
C語言如何實現(xiàn)任意數(shù)全組合?#include#include#include#define M 10int main(){int nums[M]={1,2,3,4,5,6,7,8,9,10},isra
C語言如何實現(xiàn)任意數(shù)全組合?
#include
#include
#include
#define M 10
int main()
{
int nums[M]={1,2,3,4,5,6,7,8,9,10},i
srand((unsigned)time(0))
for(i=1i
{
printf(%d”,nums[rand()%M])
}
getch()
}
注意:M是指定的數(shù)字,nums[]存儲必需的數(shù)字
只要你有足夠的空間來存儲,你就可以隨機抽取1-10個數(shù)字
double fact(long Num){for(long I=1 Num> 0 Num--){I*=Num}}int main(){long m long n long C scanf(%LD%LD,&m,&n)有許多算法是由C=fact(n)/((fact(m))實現(xiàn)的*事實(n-m))printf(%LD”,c)返回0}
~。這是一個沒有遞歸的算法,需要設(shè)計兩個函數(shù)。unsignedlongfactorial(unsignedlongn)longlongperm(unsignedlongm,unsignedlongn)unsignedlongfactorial(unsignedlongn){unsignedlongvalue=(n==0)?1:n while(n>=2)value*=--n returnvalue}longlongperm(unsignedlongm,unsignedlongn){if(m>n)return-1 else return(unsignedlong)(階乘(n)/階乘(n-m))}僅為m>n返回-1有點浪費。注意評價范圍。如有必要,它可以擴展到Int64。。。
C語言求組合數(shù)?
#包括< T T&T dio.h>;T T T(T T)C(INTN,INTM){inti,s=1表示(I=Mi>=m-n-1i--)s*=Ifor(I=Ni>=2I--(I=Ni>=2I)s/=ireturns}INTF(intk,INTM,INTM,INTN){inti,s=0表示(I),s=1表示(I=Mi>=m>=m-n-n-1i)(I>=m-n-n-n(I&T>;T&T&T&T&T)&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T&T T&T&T&T T&T&T&T T&T&T&T&T&T&T&T&T&T&T T,然后直接調(diào)用上面的函數(shù)并返回一個值,這個值可以被請求。