• zoj 1005 Jugs


    其实这道题目,我感觉就是一道数学题,仔细观察题目的规律可知,举例吧!就用题目中的这两个例子。

    1,a b c

        3 5 4

    那么如何可以得到4呢!2*b-2*a=2*5-2*3=4  即 (b-a)+(b-a)=4 正号可以看做满水,b-a可以看做是b的水倒向a 

    2,a b c

      5  7 3

    这个可以拆解为 2*a-b=3 即 2*5-7=3  

    当然这只是第一步,得到每个那个壶先灌了几次水,那个壶向那个壶转了几次水。然后就可以推出倒了几次水。

    剩下就简单了,考验你的分析能力了!!!

    #include<stdio.h>
    #include<stdlib.h>
    int Max(int n,int i,int m,int j)
    {
        if((i*n-j*m)>0) return n;
        else return m;    
    }
    int main(void)
    {
        int i,j,n,m,v,t1,t2,max2,max1,l,t,flag;
        int x,y,ca,cb;
        char max,min;
        while(scanf("%d%d%d",&n,&m,&v)!=EOF)
        {
            if(m==v)
            {
                printf("fill B
    ");
                continue;
            }
            else if(n==v)
            {
                printf("fill A
    ");
                printf("pour A B
    ");
                continue;
            }
            else
            {
                for(t=1,i=1,j=1;1;t++)
            {
                if(abs(n*i-m*j)==v)
                break;
                if((n*i-m*j)>0)
                j++;
                else 
                i++;        
            }
            max1=Max(n,i,m,j);
            if(max1==n)/*谁先加水 */
            {
                t1=i;/*记录 */
                max2=m;t2=j;
                max='A';
                min='B';
            }
            else 
            {
                t1=j;
                max2=n,t2=i;
                min='A';
                max='B';
            }
            ca=cb=0;
            flag=0;
            for(l=1;l<=t1;l++)
            {
                /*每一次填充一个容器时都要判断加水的容器原来有没有水*/
                if(ca>0)
                {
                    if((ca+cb)>=max2)
                    {
                        printf("pour %c %c
    ",max,min);
                        printf("empty %c
    ",min);
                        printf("pour %c %c
    ",max,min);
                        cb=ca+cb-max2;
                        ca=0;
                    }
                    else
                    {
                        printf("pour %c %c
    ",max,min);
                        cb=cb+ca;
                        ca=0;
                    }
                }
                ca=max1;
                printf("fill %c
    ",max);
                if(t2||(cb>0&&cb<max2))
                {
                    if((ca+cb)>=max2)
                     {
                         if((ca+cb-max2)==v&&max=='B')
                         {
                             printf("pour %c %c
    ",max,min);
                             flag=1;
                         }
                         else 
                         {
                         printf("pour %c %c
    ",max,min);
                        printf("empty %c
    ",min);
                        printf("pour %c %c
    ",max,min);
                        cb=ca+cb-max2;
                        ca=0;
                         }
                         
                         
                    }
                    else
                    {
                        printf("pour %c %c
    ",max,min);
                        cb=ca+cb;
                        ca=0;
                    }
                }
                    
            }
            if(flag==1||(max=='B'&&ca==v)||(min=='B'&&cb==v))
            printf("success
    ");
            else if(min!='B'&&cb==v)
            {
            printf("pour %c %c
    ",min,max);
            printf("success
    ");
            }
            else if(max!='B'&&ca==v)
            {
            printf("pour %c %c
    ",min,max);
            printf("success
    ");
            }
            }
            
            
        }
        return 0;
    }
  • 相关阅读:
    phpMyAdmin出现错误 Access denied for user 'root'@'localhost' (using password: NO)
    Android使用butterknife注解出现nullPointerException解决
    Fragment Touch事件泄露
    清空Fragment回退栈中某个Fragment之上的所有Fragment
    Fragment保持状态切换
    点击EditText可编辑,点击其他地方不可编辑
    android ActionBar 去掉menu分隔线
    jquery validation remote进行唯一性验证时只使用自定义参数,不使用默认参数
    php 闭包函数
    phpstorm快捷按键
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/3612186.html
Copyright © 2020-2023  润新知