一个经典C语言编程题的算法解析(等分正三角形后共得多少三角形)
2016-11-27 14:26
495 查看
经典C语言编程题解析
将一个正三角形的各边都n等分,过各分点作其它两边的平行线,一共可产生多少个三角形(包括原来的三角形在内)?
解析:不妨设正△ABC的边长为n,首先考虑“头朝上”的三角形,即平行于水平线的那条边在其对角顶点下方的三角形.
边长为1的“头朝上”的三角形有
1+2+…+n = (n(n + 1) / 2)个.
边长为2的“头朝上”的三角形有
1+2+…+(n-1) = ((n(n - 1)) / 2)个.
……
边长为n的“头朝上”的三角形只有1个.
从而,“头朝上”的三角形共有 ((n(n+1)(n+2)) / 6)个.
然后考虑“头朝下”的三角形,即平行于水平线的那条边在其对角顶点上方的三角形.
边长为1的“头朝下”的三角形有
1+2+…+(n-1)=(n(n-1) / 2)个.
边长为2的“头朝下”的三角形有
1+2+…+(n-3)(((n - 3)(n - 2)) / 2)个.
边长为m的“头朝下”的三角形有
=((n - m - 1)(n - m)) / 2)个
故当n为奇数时,“头朝下”的三角形有
=(((n - 1)(n + 1)(2n + 3)) / 24)个.
当n为偶数时,“头朝下”的三角形有
=((n(n + 1)(2n - 1)) / 24)个.
综上所述,一共产生的三角形的个数为
N =((n + 1)(2n^2 + 3n - 1) / 8),n为奇数;
N = (n(n + 2)(2n + 1) / 8),n为偶数;
将一个正三角形的各边都n等分,过各分点作其它两边的平行线,一共可产生多少个三角形(包括原来的三角形在内)?
解析:不妨设正△ABC的边长为n,首先考虑“头朝上”的三角形,即平行于水平线的那条边在其对角顶点下方的三角形.
边长为1的“头朝上”的三角形有
1+2+…+n = (n(n + 1) / 2)个.
边长为2的“头朝上”的三角形有
1+2+…+(n-1) = ((n(n - 1)) / 2)个.
……
边长为n的“头朝上”的三角形只有1个.
从而,“头朝上”的三角形共有 ((n(n+1)(n+2)) / 6)个.
然后考虑“头朝下”的三角形,即平行于水平线的那条边在其对角顶点上方的三角形.
边长为1的“头朝下”的三角形有
1+2+…+(n-1)=(n(n-1) / 2)个.
边长为2的“头朝下”的三角形有
1+2+…+(n-3)(((n - 3)(n - 2)) / 2)个.
边长为m的“头朝下”的三角形有
=((n - m - 1)(n - m)) / 2)个
故当n为奇数时,“头朝下”的三角形有
=(((n - 1)(n + 1)(2n + 3)) / 24)个.
当n为偶数时,“头朝下”的三角形有
=((n(n + 1)(2n - 1)) / 24)个.
综上所述,一共产生的三角形的个数为
N =((n + 1)(2n^2 + 3n - 1) / 8),n为奇数;
N = (n(n + 2)(2n + 1) / 8),n为偶数;
相关文章推荐
- c语言 经典算法等腰三角形输出
- 【经典游戏编程题】C语言:编写一个棋盘游戏,与二维数组结合
- c语言int to string一个比较经典得算法
- java经典算法_012一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?
- C语言计算日期间隔天数的经典算法解析
- C语言计算日期间隔天数的经典算法解析
- 【经典游戏编程题】C语言:编写一个棋盘游戏,与二维数组结合
- C语言计算日期间隔天数的经典算法解析
- 经典算法解析
- 一个经典算法
- 一个比较费脑汁的算法,无奈在此求助!用C语言哦
- 分享:C语言的学习基础,100个经典的算法
- [c][zz]C语言100个经典算法
- 经典算法:红黑树的C语言实现 ( 插入 、删除 )
- 经典算法100道(3)-绘制一个圆
- c语言经典算法之数小孩
- C语言的一个简单算法: 26个字母随机步生成
- BSP分割算法补充——关于分割一个三角形
- 一个小程序,算法很经典
- 一个经典的全排列算法