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

Chương trình C ++ để kiểm tra xem chúng ta có thể phân phối túi để hai người bạn nhận được số kẹo như nhau hay không

Giả sử chúng ta có một mảng A với 4 phần tử. Có 4 túi kẹo, túi thứ i chứa A [i] lượng kẹo. Chúng tôi muốn tặng mỗi túi cho một trong hai người bạn của chúng tôi. Chúng ta phải kiểm tra xem chúng ta có thể phân phối các túi này theo cách mà mỗi người bạn nhận được tổng số kẹo như nhau không?

Vì vậy, nếu đầu vào là A =[1, 7, 11, 5], thì đầu ra sẽ là Đúng, vì chúng ta có thể cho túi thứ nhất và túi thứ ba cho bạn thứ nhất, còn bạn thứ hai và túi thứ tư cho người bạn thứ hai. Bằng cách này, mỗi người bạn sẽ nhận được 12 viên kẹo.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

a := A[0]
b := A[1]
c := A[2]
d := A[3]
if (a + b) is same as (c + d) or (a + c) is same as (b + d) or (a + d) is same as (b + c) or (a + b + c) is same as d or (a + b + d) is same as c or (a + c + d) is same as b or (b + c + d) is same as a, then:
   return true
Otherwise
   return false

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;

bool solve(vector<int> A) {
   int a = A[0];
   int b = A[1];
   int c = A[2];
   int d = A[3];
   if (a + b == c + d || a + c == b + d || a + d == b + c || a + b + c == d || a + b + d ==          c || a + c + d == b || b + c + d == a)
      return true;
   else
      return false;
}
int main() {
   vector<int> A = { 1, 7, 11, 5 };
   cout << solve(A) << endl;
}

Đầu vào

1, 7, 11, 5

Đầu ra

1