字体:  

Yahoo中国面试题PHP算法,在些难度!!

i.love.you.team 发表于: 2008-8-10 21:02 来源: PHPChina 开源社区门户

Yahoo-PHPDev

3.7 写一个function实现数组内每个元素之间加法的递代运算?
注:数组元素全部为自然数.
例:
$data=array(1,2,3);
程序要求打印出数组每个数组元素相互之间各种可能性加法(包括元素自已本身加法)

1+1=2,1+2=3,1+3=5,
2+2=4,2+3=5,
3+3=6

打印出以下结果

Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 4
        )
    [1] => Array
        (
            [1] => 4
            [2] => 5
        )
    [2] => Array
        (
            [2] => 6
        )
)


我自己写的算法:



[ 本帖最后由 七月十五 于 2008-9-4 16:38 编辑 ]

最新回复

muyannian at 2008-8-10 22:54:50
1*1
1*2 2*2
1*3 2*3 3*3

两层for循环CROSS,交叉下。
这种组合有个特点是  前面的数必须小于等于后面的数,如果没有这层判断交叉后的是个矩形,而这里我只要包括对角线内的一半。
蟋蟀 at 2008-8-10 23:04:31
和我去面试考的不一样呢?
我记得我那有一到是考mysql的
什么是索引,索引总类,为什么要使用索引,索引的存储方式 索引的物理存储数据结构描述是怎样的
汉化天空 at 2008-8-10 23:05:36
大公司 全拿算法题来难大家,
我数学不行.
估计进公司难咯
xyiyo at 2008-8-10 23:14:21
简单得很~~~
wukewei00o at 2008-8-11 10:37:27
五楼的程序也是正确的,测试通过
jiania at 2008-8-11 10:50:30
正确,五楼效率更高些:)
ilsanbao at 2008-8-13 09:38:47

可以进一步提高效率

[ 本帖最后由 ilsanbao 于 2008-8-13 09:41 编辑 ]
ylcz at 2008-8-13 10:06:42
长长见识
g1111111g at 2008-8-13 10:22:06
LZ的代码的循环次数过多,会得到一些重复的数据
5楼的循环终止条件不应该包含count这样会降低效率
8楼的也犯了同样的毛病,循环里count你觉得有必要吗?
我的最快!


[ 本帖最后由 g1111111g 于 2008-8-13 10:38 编辑 ]
boy_xin at 2008-8-13 10:25:13
8楼好样的,这样执行count($data)这条命令少了(count($data))!-1次
反射镜 at 2008-8-13 12:36:11
Alog_W at 2008-8-13 13:35:25
1+3=5?
xyiyo at 2008-8-13 15:46:56

QUOTE:

原帖由 g1111111g 于 2008-8-13 10:22 发表
LZ的代码的循环次数过多,会得到一些重复的数据
5楼的循环终止条件不应该包含count这样会降低效率
8楼的也犯了同样的毛病,循环里count你觉得有必要吗?
我的最快!


g1111111g at 2008-8-13 16:40:57

QUOTE:

原帖由 xyiyo 于 2008-8-13 15:46 发表

我错了,表现的好像有点过
tianxj at 2008-8-13 17:34:25
可以搞个起泡算法嘛。
下班了,没时间好好写一个
edwardhey at 2008-8-13 19:37:57
怎么和我面试的题目不一样的?

在那里面试你的?北京?
soone at 2008-8-13 22:32:56

QUOTE:

原帖由 xyiyo 于 2008-8-13 15:46 发表

feifengxlq at 2008-8-13 23:09:03

QUOTE:

原帖由 xyiyo 于 2008-8-10 23:14 发表
简单得很~~~


明显的存在效率问题。。。把count提出去
darkeye at 2008-8-14 16:17:09

结果:
Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 4
        )

    [1] => Array
        (
            [1] => 4
            [2] => 5
        )

    [2] => Array
        (
            [3] => 6
        )

)


有点长,只是另外一种思路

[ 本帖最后由 七月十五 于 2008-9-4 16:40 编辑 ]
gug365 at 2008-8-14 16:57:23
都写了,我就不写了