ホームページ > バックエンド開発 > PHPチュートリアル > 面试题 - PHP逻辑算法:一张纸最多可以分割成多少块?

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-06 20:30:09
オリジナル
1177 人が閲覧しました

题目:

<code>在一张白纸上画2999条直线,最多可以将白纸分割成多少块?请写出计算函数
</code>
ログイン後にコピー
ログイン後にコピー

答案:

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

</code>
ログイン後にコピー
ログイン後にコピー

求算法

<code>maxBlock(2999);
</code>
ログイン後にコピー
ログイン後にコピー

回复内容:

题目:

<code>在一张白纸上画2999条直线,最多可以将白纸分割成多少块?请写出计算函数
</code>
ログイン後にコピー
ログイン後にコピー

答案:

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

</code>
ログイン後にコピー
ログイン後にコピー

求算法

<code>maxBlock(2999);
</code>
ログイン後にコピー
ログイン後にコピー

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

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

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート