สมมติว่าเรามีตัวเลขสามตัว 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