题目描述:
牛牛有一个数组长度大小为 ,数组中有 个正整数。现在牛牛请你从其中选出三个元素(注意选择元素的下标不能相同,但是其值可以相同)组成一个三角形。
无法做到,请输出一行一个字符串"No solution",反之请输出这三个元素的值。
如果有多种组成三角形的元素组合,你可以输出任意一种
输入描述:
第一行是一个正整数 ,( )表示数组的元素个数。
接下来一行输入 个正整数 ( )表示每个数组元素的值。
输出描述:
如无法做到,请输出一行一个字符串"No solution",反之请输出这三个元素的值。
如果有多种组成三角形的元素组合,你可以输出任意一种。
示例1
输入
5
2 2 3 2 2
输出
2 2 3
说明
使用2 2 3,可以组成一个三角形
示例2
输入
3
1 2 1
输出
No solution
说明
1 2 1不能组成一个三角形,无解。
/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 作者:水木清华 2020-05-08 牛牛的三角形 */ #include <iostream> #include <vector> #include <algorithm> using namespace std; int TriangleJudge(int n) { vector<int> nums; int number; for (int i = 0; i < n; i++) { cin >> number; nums.push_back(number); } int count = 0; sort(nums.begin(), nums.end()); for (int i = n - 1; i >= 2; i--) { int left = 0, right = i - 1; while(left < right) { if (nums[left] + nums[right] > nums[i]) { count += (right - left); cout << nums[left] << ' ' << nums[right] << ' ' << nums[i] << endl; break; } else { left++; } } break; } if (count == 0) { cout << "No solution" << endl; } return 0; } //主函数 int main () { int n; while (cin >> n) { TriangleJudge (n); } return 0; }