描述 编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true;不满足时返回false。 知识点 字符串,循环,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归 运行时间限制 10M 内存限制 128 输入 输入输入的数据个数 输入一个int型数组
输出 返回true或者false
样例输入 4 1 5 -5 1 样例输出 true
#include <iostream> #include<vector> #include<algorithm> #include<string> using namespace std; bool sum_same(int sum1, int sum2, int i, vector<int> &v){ for (int j = 0; j <= i; j++){ sum1 += v[j]; } for (int j = i + 1; j < v.size(); j++) sum2 += v[j]; if (sum1 == sum2) return true; else return false; } int main(){ vector<int> v,v3,v5; int n; cin >> n; int t; for (int i = 0; i < n; i++){ cin >>t; if (t % 5 == 0){ v5.push_back(t); } else if (t % 3 == 0){ v3.push_back(t); } else{ v.push_back(t); } } int sum1=0; int sum2 = 0; for (int i = 0; i < v5.size(); i++) sum1 += v5[i]; for (int i = 0; i < v3.size(); i++) sum2 += v3[i]; sort(v.begin(), v.end()); int flag = false; do{ for (int i = 0; i < v.size(); i++){ if (sum_same(sum1, sum2, i, v)){ cout << "true" << endl; return 0; } } } while (next_permutation(v.begin(), v.end())); cout << "false" << endl; return 0; }