AcWing 3585:三角形的边 ← sort() 函数
【题目来源】
给定三个已知长度的边,确定是否能够构成一个三角形,这是一个简单的几何问题。
我们都知道,这要求两边之和大于第三边。
实际上,并不需要检验所有三种可能,只需要计算最短的两个边长之和是否大于最大那个就可以了。
这次的问题就是:给出三个正整数,计算最小的数加上次小的数减去最大的数的差。
【输入格式】
输入包含若干组数据,每组数据占一行,包含三个整数 a,b,c。
【输出格式】
每组数据输出一行,一个结果,表示最小的数加上次小的数减去最大的数的差。
【数据范围】
输入最多包含 100 组数据。
1≤a,b,c≤10000
【输入样例】
1 2 3
6 5 4
10 20 15
1 1 100
【输出样例】
0
3
5
-98
【算法分析】
● 下面这种写法的代码在 AcWing 上测试会超时(TLE),大概率是因为 while(1) 的原因。
#include<bits/stdc++.h>
using namespace std;
int a[3];
int main() {
while(1) {
cin>>a[0]>>a[1]>>a[2];
sort(a,a+3);
cout<<a[0]+a[1]-a[2]<<endl;
}
}
【算法代码】
#include<bits/stdc++.h>
using namespace std;
int a[3];
int main() {
while(cin>>a[0]>>a[1]>>a[2]) {
sort(a,a+3);
cout<<a[0]+a[1]-a[2]<<endl;
}
}
/*
in:
1 2 3
6 5 4
10 20 15
1 1 100
out:
0
3
5
-98
*/
【参考文献】
https://www.acwing.com/solution/content/128686/