Fox Ciel有r朵红花,g朵绿花和b朵蓝花。她想用这些花做几个花束。
有四种类型的花束:
- 制作“红色花束”,要3朵红花
- 制作“绿色花束”,要3朵绿花
- 制作“蓝色花束”,要3朵蓝花
- 制作“混合花束”,要1朵红,1朵绿和1朵蓝花
输出可以制作的最大数量的花束。
样例1:
3 6 9
6
样例2:
4 4 4
4
样例3:
7 7 8
7
样例4:
3 5 5
4
解题思路:通过观察先找混合花束最多能有几朵,但是卡在了样例10也就是3 5 5,他并不是最小的混合花束数量而导致的结果最大,而是退了一步,留一朵或者两朵当然三朵已经没有必要了我们发现留一朵就可以ac.
#include<iostream>
using namespace std;
int mix;
int sum,sum1;
int main()
{
int a,b,c;
cin>>a>>b>>c;
mix=min(a,min(b,c));
sum+=(a-mix)/3+(b-mix)/3+(c-mix)/3;
int mix1=mix-1;
if(mix1>0)
{
sum1+=(a-mix1)/3+(b-mix1)/3+(c-mix1)/3;
}
cout<<max(sum+mix,sum1+mix1);
return 0;
}
//退一步 mix求的是混合花束最多有几束