计算机编程问题,不懂的可以查手册,可以照搬别人的代码,尤其是php。
看到本版关于算法问题的帖子少之又少,的确是个遗憾,算法真的很重要。
一个精通程序逻辑算法的程序员一定会成为一名大牛。
如果你的公司准备招聘php高手,这道测试题不妨放到笔试的最后一道。
废话少说,看题吧:
QUOTE:
一、有这么一个数组
$Array = array(array("a1", "a2", "a3", ...), array("b1", "b2", "b3", ...), ...)
以阵列形式列出,结构如下:
a1 a2 a3 ...
b1 b2 b3 ...
c1 c2 c3 ...
... ...
...
共n行。
即count($Array) = n
现在需要取出其中m行,一共有多少种取法,打印出取出的所有可能的一维行数为n的数组。
例如:
如果数组是:
a1 a2 a3
b1 b2 b3 b4
c1 c2
n = count($Array) = 3
要取出其中2行,结果是
***************************
a1 a2 a3
b1 b2 b3 b4
或
b1 b2 b3 b4
c1 c2
或
a1 a2 a3
c1 c2
***************************
要取出其中1行,结果是
***************************
a1 a2 a3
或
b1 b2 b3 b4
或
c1 c2
***************************
请用php写出这个组合的算法。
二、完成第一题之后,再完成以下任务。
将第一步中计算出来的组合数组拆分成如下形式:
例如:
a1 a2 a3
c1 c2
拆分为行数为3*2的二维数组如下
******************
a1 c1
a1 c2
a2 c1
a2 c2
a3 c1
a3 c3
即:array(0=>array('a1','c1'), 1=>array('a1','c2'), 2=>array('a2','c1'), ...)
******************
请注意:原始数组$Array是个一维行数未知,第二维的行数也未知的二维数组。
请不要试图使用foreach循环和for循环直接解决此问题。