数据范围很小,可以暴力枚举
所以这道题就是学暴力的
可以注意到最多只有7个类型的孩子,枚举2^7个方案,记录孩子数最多的方案即可。
#include<bits/stdc++.h>
using namespace std;
bitset<32> bitvec;
// 所有可能的孩子
int p[7][3] = {{0, 0, 1}, {0, 1, 0}, {1, 0, 0}, {1, 1, 0}, {1, 0, 1}, {0, 1, 1}, {1, 1, 1}};
int main()
{
int T;
cin >> T;
int a, b, c;
while(T--) {
cin >> a >> b >> c;
int ma, mb, mc;
int res = 0;
for (int i = 0; i < (1 << 7); i++) { //用0~127表示了所有可能的方案
ma = 0, mb = 0, mc = 0;
int num = 0;
int t = i;
// 对于第i种方案,判断是否合法
for (int j = 0; j < 7; j++) {
if(t%2 == 1) { //最后一位为1对应方案{0, 0, 1}被选中
ma += p[j][0];
mb += p[j][1];
mc += p[j][2];
num++;
}
t = t/2;
}
if (ma <= a && mb <= b && mc <= c) {
res = max(res, num);
}
}
cout << res << endl;
}
return 0;
}