#include<iostream>
using namespace std;
int countwater()
{
int sumprice=20;
int sumpz=0;
int sumpg=0;
int sum=0;
while((sumprice)||(sumpz>=2)||(sumpg>=3))
{
while(sumprice)
{
sumprice--;
sum++;
sumpz++;
sumpg++;
}
while((sumpz>=2))
{
int a=sumpz/2;
sumpz%=2;
sumprice+=a;
}
while((sumpg>=3))
{
int b=sumpg/3;
sumpg%=3;
sumprice+=b;
}
}
cout<<"剩下的瓶子数:"<<sumpz<<endl;
cout<<"剩下的瓶盖数:"<<sumpg<<endl;
return sum;
}
int main()
{
cout<<countwater();
return 0;
}
贪心算法不一定最优:但是这题就是最优的算法,你可以思考一下(任何一种【除了1元】,剩下组合不可能出现1和1,都是1和2)