題目敘述
每筆測資第一行有一個正整數N,接下來會有N行,每一行有三個正整數,代表一個三角形的三個邊長。要求輸出每一組邊長是否可以拼成一個三角形,如可以輸出OK,反之則輸出Wrong!!。
範例輸入 #1
6
1 2 3
3 2 5
3 4 5
6 6 1
3 3 3
7 3 10
範例輸出 #1
Wrong!!
Wrong!!
OK
OK
OK
Wrong!!
解題思路
任意兩邊長的和要大於第三邊才能是三角形,可以將三個數字排序過後將最小的兩個數字加起來看是否大於最大邊長,這樣就不需要每種組合都要判斷。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
for (int i = 0; i<N; i++)
{
vector<int>num;
for (int j = 0; j<3; j++)
{
int tmp;
cin >> tmp;
num.push_back(tmp);
}
sort(num.begin(), num.end());
if (num[0] + num[1] > num[2]) cout << "OK\n";
else cout << "Wrong!!\n";
}
}
留言
張貼留言