#10. 三角形的个数
【题目描述】:
给出n条长度完全不同的线段,从中任选3 条,问能组成多少个不同的三角形?
【输入描述】:
第一行为线段的条数n;
第二行有n 个数,即n 条线段的长度,各个数之间用一个空格隔开。
【输出描述】:
仅一个正整数,表示可以组成的三角形的个数。
【样例输入】:
4
1 2 3 4
【样例输出】:
1
【时间限制、数据范围及描述】:
时间:1s 空间:128M
3<=n<=100
线段的长度不超过10000
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> using namespace std; int n,a[610]; int read(){ int a=0,b=1; char ch=getchar(); while((ch<48||ch>57)&&ch!='-'){ ch=getchar(); } if(ch=='-'){ b=-1; ch=getchar(); } while(ch<48||ch>57){ ch=getchar(); } while(ch>47&&ch<58){ a=a*10+ch-48; ch=getchar(); } return a*b; } int main(){ n=read(); for(int i=0;i<n;i++){ a[i]=read(); } sort(a,a+n); long long ans=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ for(int k=j+1;k<n;k++){ if(a[i]+a[j]>a[k]){ ans++; } } } } printf("%lld",ans); return 0; }