สมมุติว่าเรามีตัวเลขสามตัว ภารกิจคือการนับจำนวนขั้นตอนที่เหมาะสมที่สุดเพื่อทำให้ตัวเลขทั้งหมดเหล่านี้เป็น '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