[编程题] 组装三角形
时间限制:1秒
空间限制:32768K
牛牛手里有N根木棒,分别编号为1~N,现在他从N根里想取出三根木棒,使得三根木棒构成一个三角形,你能计算出牛牛有多少种取法吗?(考虑两种取法中使用的木棒编号有一个不一样就认为是不同的取法)。
输入描述:
首先输入一个正整数N,接下来的一行共有N个正整数表示每个木棒的长度。
N ≤ 50, 木棒的长度 ≤ 10000.
输出描述:
输出一个整数表示方法数。
输入例子:
5 1 2 3 4 5
输出例子:
3
解题思路:本题采用的暴力的方式,分别判断选取的三个边是否可以组成三角形
1 #include <iostream> 2 using namespace std; 3 bool Is_Triangle(int a,int b,int c) 4 { 5 bool flag = false; 6 if(a+b >c && a+c > b && b+c >a) 7 { 8 flag = true; 9 } 10 return flag; 11 } 12 13 int main() 14 { 15 int n; 16 while(cin>>n) 17 { 18 int a[n]; 19 int count = 0; 20 for(int i=0;i<n;i++) 21 { 22 cin>>a[i]; 23 } 24 for(int i=0;i<n;i++) 25 { 26 for(int j=i+1;j<n;j++) 27 { 28 for(int k=j+1;k<n;k++) 29 { 30 if(Is_Triangle(a[i],a[j],a[k])) 31 { 32 count++; 33 } 34 } 35 } 36 } 37 cout<<count<<endl; 38 } 39 return 0; 40 }