Mam do napisania program, sprawdzający czy spośród 4 podanych przeze mnie cyfr, znajdziemy taki podzbiór, by suma tych cyfr wyniosła "0". Znalazłem taki oto kod z rozwiązaniem, lecz nie do końca rozumiem jego działanie. Mógłby ktoś tak ogólnie wytłumaczyć idee?
#include <bits/stdc++.h>
#define int long long
using namespace std;
main()
{
int t;
cin >> t;
while (t--) {
int A[4];
for (int i = 0; i < 4; i++)
cin >> A[i];
int tot = 1 << 4;
int sum = 0;
bool flag = 0;
for (int mask = 1; mask < tot; mask++) {
for (int i = 0; i < 4; i++) {
int x = 1 << i;
if (mask & x)
sum += A[i];
}
if (sum == 0)
flag = 1;
sum = 0;
}
if (flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
}