Home > Backend Development > PHP Tutorial > 面试题 - PHP逻辑算法:一张纸最多可以分割成多少块?

面试题 - PHP逻辑算法:一张纸最多可以分割成多少块?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-06 20:30:09
Original
1171 people have browsed it

题目:

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

答案:

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

</code>
Copy after login
Copy after login

求算法

<code>maxBlock(2999);
</code>
Copy after login
Copy after login

回复内容:

题目:

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

答案:

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

</code>
Copy after login
Copy after login

求算法

<code>maxBlock(2999);
</code>
Copy after login
Copy after login

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

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template