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