我们得到一个包含三角形边长的数组。目的是找到可以通过从该阵列取任意三个边来形成的可能三角形的数量。
我们将通过检查任何两个总和是否总是>第三方来做到这一点。如果是,则这三个边可以组成一个三角形。可以制作的可能三角形的增量计数。
让我们通过示例来理解。
输入− arr [] = {1,2,4,5}
输出-可能的三角形数-1
说明-边(2,4,5)只能作为2 + 4> 5&4 + 5> 2&2 + 5> 4的三角形
输入− arr [] = {4,5,6,3,2}
输出-可能的三角形数-7
说明-侧面(4,5,6),(4,5,2),(4,5,3),(4,3,2),(5,6,3),(5,6,2)可以做成三角形。
我们采用以随机正数初始化的整数数组arr []。
函数countTriangles(int arr [],int n)接受数组及其长度,并返回可能形成的三角形。
将三角形的初始计数设为0。
取三个边的三个for循环。
最外层循环0 <= i <n-2,内层i <j <n-1和最内层j <k <n
对于边arr [i],arr [j],arr [k]检查它们是否形成三角形的边。
如果计数为真,则检查arr [i] + arr [j]> arr [k] && arr [i] + arr [k]> arr [j] && arr [k] + arr [j]> arr [i]。
返回计数作为结果。
#include <bits/stdc++.h> using namespace std; int countTriangles(int arr[], int n){ //三角形数 int count = 0; for (int i = 0; i < n-2; i++){ for (int j = i + 1; j < n-1; j++){ for (int k = j + 1; k < n; k++){ //any two sides have sum > third if ( arr[i] + arr[j] > arr[k] && arr[i] + arr[k] > arr[j] && arr[k] + arr[j] > arr[i]) { count++; } } } } return count; } int main(){ int Arr[] = { 1,2,5,3,6,8,10 }; int len = sizeof(Arr) / sizeof(Arr[0]); cout << "count of Triangles possible : "<< countTriangles(Arr, len); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
count of Triangles possible : 8