zoukankan      html  css  js  c++  java
  • 平面分割

    题目:有n条直线互相相交,其中共有p(p>=2)个交点,求能分割出的平面的个数。

    一看这题,是怎样推出是一个递推式的呢?

    首先考虑每一条直线,他们相交共有两种情况:一种是全都相交于一点,另一种是不相交于一点。

    那好,先来分析相交于一点的情况:

    一条直线把平面分割成两个。

    两条直线把平面分割成四个。

    三条直线把平面分成六个;

    四条直线把平面分成八个

    ……

    n条直线把平面分成2*n个。

    这样若干条直线相交于一点的情况就能推出来一个式子了。

    接着再来考虑另一种情况,就是他们不是相交于一点的:

    我们不妨也来以每一条直线为基本单位来推,假设p=3,那么从第四条直线开始思考:

    第四条直线在原来的六个平面上又加了四个平面,2*3+4=10

    再假设p=4,从第五条直线开始思考:

    第五条在原来的八个平面上加了五个平面 2*4+5=13

    所以能找出规律:p+1条直线添加了p+1个平面,要考虑一般情况,还得再考虑p+2,p+3……p+n这些直线。

    还是上面的p=4的图,当添加第六条直线时:

    平面的个数又加了六个,则可以推出第七条加了七个,第n条加了n个。

    所以综合以上几种情况,可以得出递推式为2*p+(n+p+1)*(n-p)/2,这一个式子就可以把所有式子全部包含了,代码:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n,p;
    int main()
    {
      scanf("%d%d",&n,&p);
      printf("%d",2*p+(n+p+1)*(n-p)/2);
      return 0;
    }

    这是一道运用分类讨论思想的递推题,只要把每种情况的式子列好,那么整合两种情况就可以解决。

  • 相关阅读:
    Excel函数和公式——Excel基础(8)
    Excel函数和公式——Excel基础(7)
    条件格式与公式——Excel基础(6)
    日期函数——Excel基础(5)
    Excel导入邮件合并——Excel基础(4)
    VScode与ssh
    python绘图相关知识点
    Python加密成.so或dll
    Pytorch从本地获取数据集
    Pytorch_3.3_ 线性回归的简洁实现
  • 原文地址:https://www.cnblogs.com/Zhoier-Zxy/p/8319822.html
Copyright © 2011-2022 走看看