数据范围小, 直接暴力
将各水果排降序, 在取的个数的每种情况内(如取1, 2, 3个), 先取含有最大数(即a[0])的那些集合, 这样能保证答案数最大。
#include<cstdio>
#include<algorithm>
using namespace std;
int t;
int a[3], b[3];
bool cmp(const int& a, const int& b){
if(a > b) return true;
return false;
}
int main()
{
scanf("%d", &t);
while(t--){
int ans = 0;
for(int i = 0; i < 3; i ++) scanf("%d", &a[i]);
sort(a, a + 3, cmp);
if(a[0]) a[0]--, ans++;//开始尝试取1个数
if(a[1]) a[1]--, ans++;
if(a[2]) a[2]--, ans++;
if(a[0] && a[1]) a[0]--, a[1]--, ans++;//开始尝试取2个数
if(a[0] && a[2]) a[0]--, a[2]--, ans++;
if(a[1] && a[2]) a[1]--, a[2]--, ans++;
if(a[0] && a[1] && a[2]) ans++;//尝试取3个数
printf("%d\n", ans);
}
return 0;
}