สมมติว่าเรามีตัวเลขสามตัว a, b และ c มีสามแท่งที่มีความยาว a, b และ c ใน 1 นาที เราสามารถเลือกไม้หนึ่งอันใดอันหนึ่งและเพิ่มความยาวได้ 1 ซม. แต่เราไม่สามารถหักไม้ได้ เราต้องนับจำนวนนาทีขั้นต่ำที่จำเป็นในการเพิ่มความยาวและเราสามารถสร้างสามเหลี่ยมกับพวกมันได้
ดังนั้นหากอินพุตเป็นเหมือน a =2; ข =3; c =5 จากนั้นผลลัพธ์จะเป็น 1 เพราะโดยการเพิ่ม a หรือ b อันใดอันหนึ่งขึ้น 1 เราสามารถสร้างสามเหลี่ยม (a + b)> c ดังนั้นหนึ่งนาทีก็เพียงพอแล้ว
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
Define an array A = { a, b, c } sort the array A return maximum of (A[2] - A[1] - A[0] + 1) and 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