สมมติว่าเรามีตัวเลข 3 ตัว a, b และ c มีไม้ 3 แทง ความยาวคือ a, b และ c ในหนึ่งนาที เราสามารถเลือกไม้แทงหนึ่งแทงและเพิ่มความยาว 1 ซม. แต่ไม่สามารถหักไม้ได้ เราต้องนับนาทีขั้นต่ำที่ต้องเพิ่มความยาว และสามารถสร้างสามเหลี่ยมได้จากพวกมัน
เช่น ถ้าค่าที่ป้อนเข้าเป็น a = 2; b = 3; c = 5 ผลลัพธ์จะได้ 1 เพราะเพิ่ม a หรือ b ขึ้น 1 ได้ (a + b) > c ดังนั้น 1 นาทีเพียงพอ
ขั้นตอนการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
กำหนดอาร์เรย์ A = { a, b, c } เรียงลำดับอาร์เรย์ A คืนค่า max(A[2] - A[1] - A[0] + 1, 0)
ตัวอย่างโค้ด
ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:
#include <bits/stdc++.h> using namespace std; int solve(int a, int b, int c) { vector<int> A = { a, b, c }; sort(A.begin(), A.end()); return max(A[2] - A[1] - A[0] + 1, 0); } int main() { int a = 2; int b = 3; int c = 5; cout << solve(a, b, c) << endl; }
ข้อมูลนำเข้า
2, 3, 5
ข้อมูลส่งออก
1