สมมุติว่าเรามีตัวเลขสามตัว ภารกิจคือการนับจำนวนขั้นตอนที่เหมาะสมที่สุดเพื่อทำให้ตัวเลขทั้งหมดเหล่านี้เป็น '0'
ตัวอย่าง
อินพุต-1:
a = 4 b = 4c = 6
ผลลัพธ์:
7
คำอธิบาย: จำนวนขั้นตอนที่เหมาะสมในการทำให้ตัวเลขทั้งหมดเป็น '0' คือ
(4, 4, 6)
การลบ '1' จากตัวเลขที่ 1 และ 2 =(3, 3, 6)
การลบ '1' จากตัวเลขที่ 1 และ 3 =(2, 3, 5)
กำลังลบ '1' จากหมายเลขที่ 1 และ 3 =(1 ,3, 4)
กำลังลบ '1' จากตัวเลขที่ 1 และ 3 =(0 ,3 ,3)
กำลังลบ '1' จากตัวเลขที่ 2 และ 3 =(0 ,2, 2)
กำลังลบ '1' จากตัวเลขที่ 2 และ 3 =(0, 1, 1)
กำลังลบ '1' จากตัวเลขที่ 2 และ 3 =(0, 0, 0)
ดังนั้น จำนวนขั้นตอนทั้งหมดในการทำให้ตัวเลขทั้งหมดเป็นศูนย์คือ '7'
แนวทางในการแก้ปัญหานี้
เพื่อแก้ปัญหานี้โดยเฉพาะ เราจะลบ '1' ออกจากตัวเลขสองตัวใดๆ เพื่อให้ผลรวมของตัวเลขสองตัวนี้มากกว่าตัวสุดท้าย ในการค้นหาขั้นตอนขั้นต่ำเพื่อทำให้เป็นศูนย์ เราจะคำนวณจำนวนขั้นตอนขั้นต่ำ
- ใส่ตัวเลขสามตัวเป็นอินพุต
- ตรวจสอบว่าผลรวมของตัวเลขสองตัวหรือไม่ สมมติว่า 'a' และ 'b' มากกว่า 'c' และ a> 0, b> 0 จากนั้นลบ '1' ออกจาก 'a' และ 'b'
- หาค่าต่ำสุดจากคำตอบและส่งคืนผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int maxSteps(int a, int b, int c) {
int res = 0;
while (a + b > c and a > 0 and b > 0) {
a--;
b--;
res++;
}
res += min(c, a + b);
return res;
}
int main() {
int a = 4;
int b = 4;
int c = 6;
cout << maxSteps(a, b, c) << endl;
return 0;
} การเรียกใช้โค้ดด้านบนจะสร้างผลลัพธ์เป็น
ผลลัพธ์
7
ในอินพุตที่กำหนด a =4, b =4 และ c =6 จะใช้เวลาเจ็ดขั้นตอนในการทำให้ตัวเลขทั้งหมดเป็นศูนย์ ดังนั้นโปรแกรมจะคืนค่าเอาต์พุตเป็น 7