请教高手:如何用perl 计算出C(4,10) 的所有组合
时间:2011-06-26
来源:互联网
请教高手:如何用perl 计算出C(4,10) 的所有组合
thanks very much
thanks very much
作者: vicky_zhao03 发布时间: 2011-06-26
回复 vicky_zhao03
<math>C_n^k ={n \choose k} = \frac{P_n^k}{k!} = \frac{n!}{k!(n-k)!}</math>
<math>C_n^k ={n \choose k} = \frac{P_n^k}{k!} = \frac{n!}{k!(n-k)!}</math>
组合数.png (1.47 KB)
|
作者: minirain 发布时间: 2011-06-26
用递归,数据要求无重复有重复了也简单
复制代码
- sub choose {
- my($n, @data) = @_; # 需要从 @data 中取出 $n 项
- my @result;
- return [map {[$_]} @data] if $n == 1; # 只取一个时用
- while (1) {
- last if @data < $n; # 退出条件
- my $item = shift @data;
- my $ret = choose($n-1, @data);
- for (@$ret) {
- unshift @$_, $item;
- push @result, $_;
- }
- }
-
- return \@result;
- }
-
-
- local $, = ' ';
- for (@{choose 3, 1 .. 8}) {
- say @$_;
- }
作者: zhlong8 发布时间: 2011-06-26
回复 minirain
呵呵,感谢,可否解释下。这个能列出所有结果么?
呵呵,感谢,可否解释下。这个能列出所有结果么?
作者: vicky_zhao03 发布时间: 2011-06-26
回复 zhlong8
感谢感谢,同时也恭喜你
感谢感谢,同时也恭喜你
作者: vicky_zhao03 发布时间: 2011-06-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28