面试 - PHP逻辑算法:一张纸最多可以分割成多少块?
大家讲道理
大家讲道理 2017-04-10 15:54:53
[PHP讨论组]

题目:

在一张白纸上画2999条直线,最多可以将白纸分割成多少块?请写出计算函数

答案:

//?
function maxBlock($num)
{
    //@todo 如何计算? 
}

求算法

maxBlock(2999);
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
PHP中文网

一条线,只要它不跟之前任何的线平行,它就与所有的线都相交。
可以做到这一点,因为线的斜率可以取任何实数和无穷大,是稠密的。
一条线分割了另一条线,就相当于分割了它下方的区域。
这时我们可以得到这样的递推式:S(0) = 1; S(n) = S(n - 1) + n;
S几乎就是一个等差级数的部分何,展开之后是:S(n) = (1+n)n/2 + 1;

好了S(n)就是你想要的maxBlock(n)了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号