ホームページ >バックエンド開発 >PHPチュートリアル >[アルゴリズム] 順列と組み合わせのアルゴリズムを見つける

[アルゴリズム] 順列と組み合わせのアルゴリズムを見つける

WBOY
WBOYオリジナル
2016-06-23 13:44:52916ブラウズ

こんな感じです
0~9、a~zの36文字の中からランダムに3つの数字を選び、その順列と組み合わせが何通りあるかを計算してください
アドバイスをお願いします


ディスカッション(解決策)に返信

36 *36*36=46656

36*36*36

忘れてください、私が自分で書いたものです

/** * 排列组合算法 * 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;	}}

組み合わせ式: c(n,m)=p(n,m)/m!=n!/ ((( n-m)!*m!)
正しく理解できたと思いますか?

組み合わせ式: c(n,m)=p(n,m)/m!=n!/((n-m)!*m!)
あなたの計算は正しいと思いますか?


試してみてください

36*35*34

組み合わせ式によると、それはあなたの半分少ない 7140
です


組み合わせ式: c(n,m)=p(n,m) )/m !=n!/((n-m)!*m!)
あなたの計算は正しいと思いますか?


試してみてください

echo get_combination(3,3);
出力 2
どう考えても間違っています

echo get_combination(3,3)
出力 2
どう考えても間違っています


それを見ました 次もそうです
あなたが書いた式も間違っています
あなたの式によれば
2つの数字から2つの数字を取り出して並べると、それは1に等しいです

はい
2つの数字から2つの数字を取り出し、それらを組み合わせて、 1です
配置は2です
p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!(規定0!=1) .

補足 以下の3つの数字は同じでも構いません

例えば、配列(1, 2)から2つの乱数を取り出して組み合わせると
11
22
12
21

ペア
となります。 2つの数字から2つの数字を取り出す 組み合わせは1
順列は2
p(n,m)=n(n-1)(n-2)……(n-m+1)=n!/( n-m)!(0!= 1 と規定します)



わかりました。n^m は OK です
ありがとうございます
順列と組み合わせに苦労しました
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。