PHP 计算排列组合的函数

| 评论(1) | 暂无引用通告

直接上代码!

$CombinList[0][0] = 'a1';
$CombinList[0][1] = 'a2';
$CombinList[1][0] = 'b4';
$CombinList[1][1] = 'b5';
$CombinList[1][2] = 'b6';
$CombinList[2][0] = 'c7';
$CombinList[2][1] = 'c8';

function combin($CombinList){
	$CombineCount = 1;
	foreach($CombinList as $Key => $Value){
		$CombineCount *= count($Value);
	}
	$RepeatTime = $CombineCount;
	foreach($CombinList as $ClassNo => $StudentList){
		$RepeatTime = $RepeatTime/count($StudentList);
		$StartPosition = 1;
		foreach($StudentList as $Student){
			$TempStartPosition = $StartPosition;
			$SpaceCount = $CombineCount/count($StudentList)/$RepeatTime;
			for($J = 1; $J <= $SpaceCount; $J ++){
				for($I = 0; $I < $RepeatTime; $I ++){
					$Result[$TempStartPosition + $I][$ClassNo] = $Student;
				}
				$TempStartPosition += $RepeatTime * count($StudentList);
			}
			$StartPosition += $RepeatTime;
		}
	}
	return $Result;
}

echo "<pre>";
$Result = combin($CombinList);
print_r($Result);
foreach($Result as $k=>$v){
	echo(implode('-', $v));
	echo($wrap);
}
echo "</pre>";

/*
结果是:

Array
(
    [1] => Array
        (
            [0] => a1
            [1] => b4
            [2] => c7
        )

    [2] => Array
        (
            [0] => a1
            [1] => b4
            [2] => c8
        )

    [3] => Array
        (
            [0] => a1
            [1] => b5
            [2] => c7
        )

    [4] => Array
        (
            [0] => a1
            [1] => b5
            [2] => c8
        )

    [5] => Array
        (
            [0] => a1
            [1] => b6
            [2] => c7
        )

    [6] => Array
        (
            [0] => a1
            [1] => b6
            [2] => c8
        )

    [7] => Array
        (
            [0] => a2
            [1] => b4
            [2] => c7
        )

    [8] => Array
        (
            [0] => a2
            [1] => b4
            [2] => c8
        )

    [9] => Array
        (
            [0] => a2
            [1] => b5
            [2] => c7
        )

    [10] => Array
        (
            [0] => a2
            [1] => b5
            [2] => c8
        )

    [11] => Array
        (
            [0] => a2
            [1] => b6
            [2] => c7
        )

    [12] => Array
        (
            [0] => a2
            [1] => b6
            [2] => c8
        )

)
a1-b4-c7
a1-b4-c8
a1-b5-c7
a1-b5-c8
a1-b6-c7
a1-b6-c8
a2-b4-c7
a2-b4-c8
a2-b5-c7
a2-b5-c8
a2-b6-c7
a2-b6-c8
*/

暂无引用通告

发送引用通告网址: http://wangblog.org/cgi-bin/mt/tb.cgi/260.
如果您想引用这篇日记到您的Blog,请复制上面的链接,放置到您发表文章时的相应界面中。

评论(1)

多谢,很好用。

发表评论

Mr Wang

王炜,现在福建泉州从事 B2C 电子商务。爱好编程,业余时间在 FreeBSD / Apache / PHP / PostgerSQL 平台开发 B/S 架构的免费软件。

Follow Google Buzz Twitter Facebook Sina

收藏王炜's Blog

Bookmark and Share

关于此日记

此日记由 王炜 发表于 2009年11月 4日 23:11

此Blog上的上一篇日记JavaScript 计算排列组合的函数

此Blog上的下一篇日记《未来战警》Surrogates

首页归档页可以看到最新的日记和所有日记。