คำอธิบายปัญหา
สมมติว่าเรามีอาร์เรย์ A 4 องค์ประกอบ มีถุงขนม 4 ถุง ถุงที่ i มีขนม A[i] ชิ้น ต้องการให้แต่ละถุงแก่เพื่อน 2 คน ต้องการทราบว่าสามารถแจกได้ไหมที่แต่ละคนได้ขนมรวมเท่ากัน
ตัวอย่าง: A = [1, 7, 11, 5] ผลลัพธ์คือ True เพราะให้ถุงที่ 1 และ 3 แก่คนแรก (1+11=12) และถุงที่ 2 และ 4 แก่คนที่ 2 (7+5=12)
ขั้นตอนการแก้ปัญหา
a := A[0], b := A[1], c := A[2], d := A[3]
ถ้า (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):
คืนค่า true
มิฉะนั้น: คืนค่า false
ตัวอย่างโค้ด C++
#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;
}
อินพุต
1, 7, 11, 5
เอาต์พุต
1