[算法求助]求一个排列组合的算法

环梦旅行 2014-11-21 09:58:33
是这样的
从0~9,a~z这36个字符中随机抽取3个数,计算有多少种排列组合的方法
求大神指教
...全文
187 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
环梦旅行 2014-11-21
  • 打赏
  • 举报
回复
补充以下 这3个数可以相同 比如从数组(1,2)里提取随机两个数来组合 可以是 11 22 12 21
xuzuning 2014-11-21
  • 打赏
  • 举报
回复
对 从2个数里提出两个数来 组合 就是 1 排列 才是 2 p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!(规定0!=1).
环梦旅行 2014-11-21
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
echo get_combination(3,3); 输出 2 怎么也是不对的
恩 刚看了下也是 你写的公式也是有错误 如果按你的公式 从2个数里提出两个数来排列 就等于1
xuzuning 2014-11-21
  • 打赏
  • 举报
回复
echo get_combination(3,3); 输出 2 怎么也是不对的
xuzuning 2014-11-21
  • 打赏
  • 举报
回复
按组合公式算出的是 7140 比你少一半
引用 5 楼 u014016507 的回复:
[quote=引用 4 楼 xuzuning 的回复:] 组合公式:c(n,m)=p(n,m)/m!=n!/((n-m)!*m!) 您认为您算的对吗?
你可以试试[/quote]
智商众筹 2014-11-21
  • 打赏
  • 举报
回复
36*35*34
环梦旅行 2014-11-21
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
组合公式:c(n,m)=p(n,m)/m!=n!/((n-m)!*m!) 您认为您算的对吗?
你可以试试
xuzuning 2014-11-21
  • 打赏
  • 举报
回复
组合公式:c(n,m)=p(n,m)/m!=n!/((n-m)!*m!) 您认为您算的对吗?
环梦旅行 2014-11-21
  • 打赏
  • 举报
回复
算了 自己写出来了

/**
 * 排列组合算法
 * C($n,$m)
 * $n 元素的个数
 * $m 从$n中取出的元素个数
 * $num 组合情况的总数
 **/
function get_combination($n,$m) {
	if ((is_int($n) && is_int($m)) && ($m<=$n)){
		$a = 1;//初始化
		for ($i=1;$i<=$m;$i++){
			$a = $n*$a;
			$b = 1*$i;
			$n--;
		}
		$num = $a/$b;
		return $num;
	}
}
断点Bingo 2014-11-21
  • 打赏
  • 举报
回复
36*36*36
  • 打赏
  • 举报
回复
36*36*36=46656
环梦旅行 2014-11-21
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
对 从2个数里提出两个数来 组合 就是 1 排列 才是 2 p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!(规定0!=1).
好了 自己把自己绕进去了 n^m就OK了 谢谢了 一直纠结排列组合去了

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧