数列的排列与组合问题
关于数列的全排列已经另外一篇文章中提到过了,
?
下面来介绍下数列的组合问题:
?
例如;序列12345? 如果输入m=3,原序列的长度n=5
得到的组合数组是:123 124 125 134 135 145 234 235 245 345
如上得到所有的位数为2的组合方式,从上面的数我们也可以用序号表示:
a[0],a[1],a[2],a[3],a[4],a[5]
?
得到的组合数a[0],a[1],a[2]可用下标012表示
?
那么组合数就可以用原来数列的的下标表示即可:
?
从一开始,得到的组合数列,所有组合数的下标是递增的,最后一个组合序列的最后一位的下标即为n-1;
?
我们定义一个数组p[x]=y? 取到的第x个元素是数组a中的第y个元素 x代表的是组合序列的中的元素的索引? y代表的是数组a中的元素索引。
?
main(){char a[]="12345";for(int i=1;i<=5;i++){printf("i:%d:\n",i);zuhe(a,5,i);}}