题解 | #数组分组#
数组分组
https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86
#include <iostream> #include <vector> using namespace std; bool dfs(vector<int> num, int sum_5, int sum_3) { if (num.empty()) { return sum_5 == sum_3; } int back = num.back(); num.pop_back(); return dfs(num, sum_5 + back, sum_3) || dfs(num, sum_5, sum_3 + back); } int main() { int n; cin >> n; vector<int> num; int sum_5 = 0, sum_3 = 0; for (int i = 0; i < n; i++) { int temp; cin >> temp; if (temp % 5 == 0) { sum_5 += temp; } else if (temp % 5 != 0 && temp % 3 == 0) { sum_3 += temp; } else { num.push_back(temp); } } bool b = dfs(num, sum_5, sum_3); if (b) { cout << "true" << endl; } else { cout << "false" << endl; } } // 64 位输出请用 printf("%lld")