刚开始以为要爆搜,把所有可能的结果都寻找下,后来看了别人的解题报告后,有点懂。。。主要考虑A和n的关系来分
#include<stdio.h>
int main()
{
int a,b,n,temp,ta,tb;
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(b==n)
{
printf("fill B\n");
continue;
}
ta=tb=0;
while(tb!=n)
{
if(a>n)
{
if(ta==0)
{
printf("fill A\n");
ta=a;
}
else
if(ta+tb<=n)
{
printf("pour A B\n");
if(ta+tb<=b)
{
tb+=ta;
ta=0;
}
else
{
temp=ta+tb;
tb=b;
ta=temp-b;
}
}
else
{
if(tb==b)
{
printf("empty B\n");
tb=0;
}
else
{
printf("pour A B\n");
if(ta+tb<=b)
{
tb+=ta;
ta=0;
}
else
{
temp=ta+tb;
tb=b;
ta=temp-b;
}
}
}
}
else
{
if(tb==0)
{
printf("fill B\n");
tb=b;
}
else
if(ta+tb<=n)
{
printf("pour B A\n");
if(ta+tb<=a)
{
ta+=tb;
tb=0;
}
else
{
temp=ta+tb;
tb=temp-a;
ta=a;
}
}
else
{
if(ta==a)
{
printf("empty A\n");
ta=0;
}
else
{
printf("pour B A\n");
if(ta+tb<=a)
{
ta+=tb;
tb=0;
}
else
{
temp=ta+tb;
tb=temp-a;
ta=a;
}
}
}
}
}
printf("success\n");
}
return 0;
}