经典DFS Time Limit: 1 Second Memory Limit: 32768 KB Special Judge
传说“Special Judge ”是方案不唯一,只要是正确的方案应该都是可行的。
code:#include<stdio.h>
int main()
{
int a,b,t,n;
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(a>b||b<n||b%a==0) break;
if(a==1)//如果水壶A的容量只有1加仑,那么直接倒水n次就可以了
{
for(t=1;t<=n;t++)
printf("fill A/npour A B/n");
printf("success/n");
continue;
}
t=0;//水壶B的当前水量
while(t!=n)
{
printf("fill A/npour A B/n");//向水壶B倒水
t+=a;
if(t>=b)//如果水壶B要溢出,则倒掉一个水壶B的容量。
{
t-=b;
printf("empty B/npour A B/n");
}
}
printf("success/n");
}
return 0;
}
可是这个,上传时还是被WA了。心疼啊
先放在这里吧......再看看
看了下别人的code:
#include <stdio.h> //上面是不行的而这个却可以,纠结了啊啊 啊 啊啊
int main()
{
int ca,cb,n;
int a,b,bnow;
int i;
while (scanf("%d%d%d",&ca,&cb,&n) != EOF)
{
a = b = 0;
while (b != n)
{
for ( i=0; i<=(cb-b)/ca; i++)
{
printf ("fill A/n");
printf ("pour A B/n");
bnow = b;
bnow = b+ca;
if (bnow == n)break;
}
if (bnow == n) break;
printf ("empty B/n");
printf ("pour A B/n");
a = ca-(cb-b)%ca;
b=a;
if(b==n)break;
}
printf ("success/n");
}
return 0;
}
这个code能AC,但是3 10 8 确实过不了。。。。。
郁闷》》》》
#include<stdio.h>//输入1 5 4 没反应?
int main()
{
int a,b,t,n;
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(a==1)//所以最完美的解决:把这种情况放在最前面。
{
for(t=1;t<=n;t++)
printf("fill A/npour A B/n");
printf("success/n");
continue;
}
if(a>b||b<n||b%a==0) break;//原来的语句if(a>b||b<n) break;怪不得1 5 4 实现不了。改了以后。输入b%a==0的情况无限不停止了
t=0;
while(t!=n)
{
printf("fill A/npour A B/n");
t+=a;
if(t>=b)
{
t-=b;
printf("empty B/npour A B/n");
}
}
printf("success/n");
}
return 0;
}