您的位置:首页 > 编程语言 > C语言/C++

一个经典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为偶数; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: