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

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

WBOY
Freigeben: 2016-06-06 20:30:09
Original
1145 Leute haben es durchsucht

题目:

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

答案:

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

</code>
Nach dem Login kopieren
Nach dem Login kopieren

求算法

<code>maxBlock(2999);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

题目:

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

答案:

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

</code>
Nach dem Login kopieren
Nach dem Login kopieren

求算法

<code>maxBlock(2999);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage