Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

สร้างตัวเลขสามตัวเป็นศูนย์ใน C++


สมมุติว่าเรามีตัวเลขสามตัว ภารกิจคือการนับจำนวนขั้นตอนที่เหมาะสมที่สุดเพื่อทำให้ตัวเลขทั้งหมดเหล่านี้เป็น '0'

ตัวอย่าง

อินพุต-1:

a = 4
b = 4

c = 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