Computer >> Máy Tính >  >> Lập trình >> C ++

Tạo ba số 0 trong C ++

Giả sử chúng ta có ba số. Nhiệm vụ là đếm tổng số bước tối ưu để biến tất cả những con số này thành '0'.

Ví dụ

Đầu vào-1:

a = 4
b = 4

c = 6

Đầu ra:

7

Giải thích: Tổng số bước tối ưu để tạo ra tất cả các số '0' là,

(4, 4, 6)

Xóa '1' khỏi số thứ nhất và thứ hai =(3, 3, 6)

Xóa '1' khỏi số thứ nhất và thứ 3 =(2, 3, 5)

Xóa '1' khỏi số thứ nhất và thứ 3 =(1, 3, 4)

Xóa '1' khỏi số thứ nhất và thứ 3 =(0, 3, 3)

Xóa '1' khỏi số thứ 2 và thứ 3 =(0, 2, 2)

Xóa '1' khỏi số thứ 2 và thứ 3 =(0, 1, 1)

Xóa '1' khỏi số thứ 2 và thứ 3 =(0, 0, 0)

Do đó, tổng số bước để tạo tất cả các số 0 là '7'

Phương pháp tiếp cận để giải quyết vấn đề này

Để giải quyết vấn đề cụ thể này, chúng ta sẽ loại bỏ '1' khỏi hai số bất kỳ sao cho tổng của hai số này lớn hơn số cuối cùng. Để tìm các bước tối thiểu để biến nó thành 0, chúng tôi sẽ tính số bước tối thiểu.

  • Lấy ba số làm đầu vào.
  • Kiểm tra xem tổng của hai số, giả sử 'a' và 'b' lớn hơn 'c' và a> 0, b> 0, sau đó loại bỏ '1' khỏi 'a' và 'b'.
  • Tìm giá trị tối thiểu từ các câu trả lời và trả về kết quả.

Ví dụ

#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;
}

Chạy đoạn mã trên sẽ tạo ra kết quả là,

Đầu ra

7

Trong đầu vào đã cho a =4, b =4 và c =6, sẽ mất bảy bước để biến tất cả các số bằng 0, do đó chương trình trả về đầu ra là 7.