zoj1005

来源:互联网 发布:服装厂计件工资软件 编辑:程序博客网 时间:2024/05/16 16:08

   经典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;
}

 

原创粉丝点击