热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

《编程之美》1.7光影切割问题

由上图可知:两条直线最多一个交点,将平面分成了4个区域;三条直线最多三个交点,将平面分成了7个区域;可以推

由上图可知:


两条直线最多一个交点,将平面分成了4个区域;

三条直线最多三个交点,将平面分成了7个区域;可以推出:N条直线 M个交点,区域数为N+M+1。

可以推出:

每增加一条直线,如果增加m个交点,那么这条直线被新增加的m个交点,分成(m+1)段。每一段又会将原来的一个区域分成两块,因此,新增加了(m+1)个新区域。增加第N+1条直线时,最多与前面N条直线全部相交,增加n个交点。因此,最多增加n+1个区域。由此可得递推式:

f(n)代表n条直线时的区域的个数。

第n+1条直线最多和第n条直线 有n个交点。

所以区域数增加n+1。

解得:

这里首先用到了一个数学定理:

已知平面内有n条直线,这n条直线有m个交点(p条直线交于一点时,交点数计p-1)。则这n条直线把这个平面分成了n+m+1个平面。

这个定理的推论如下:

已知平面内有n条直线,则这n条直线最多可以把平面分成1+n+ ,

更为优雅的一种写法是:  


如果换成折线呢?

增加第N+1条折线时,最多与前面的N条折线有 个交点,最多增加4n+1个区域,递推式为:

解得:


推荐阅读
author-avatar
庄蜗怕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有