zoukankan      html  css  js  c++  java
  • 三个水杯

    判断一个数是否为整数: if(a==int(a))

    描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态最少次数。

     
    输入
    第一行一个整数N(0<N<50)表示N组测试数据
    接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V1<100 V3>0)表示三个水杯的体积。
    第二行给出三个整数E1 E2 E3 (体积小于等于相应水杯体积)表示我们需要的最终状态
    输出
    每行输出相应测试数据最少的倒水次数。如果达不到目标状态输出-1
    样例输入
    2
    6 3 1
    4 1 1
    9 3 2
    7 1 1
    样例输出
    3
    -1

    第一:输出N for循环输出三个水杯a[0],b[0],d[0] 开到50// 或者用a[]记录输出结果
    第二:前提:V1=E1+E2+E3 (根据这个等式 V1已知 如果E2 和 E3 能满足 E1必能求出)!!!!
    V3的最终状态只能是满的或者空的
    V2的最终状态是满的或V3的倍数或空的(满本身也是V3的倍数)//但是满的时候考虑方法不同
    ///////////V1的最终状态是满的或空的或!!!!!!!错误的思想
    正确的思想:只要满足上述情况 V1必能达到最终状态!!!!
    第三 E3为0 E2为0 0次
        E3为0  E2是V3的倍数 V1到给V3一次V3到给V2的倍数次  倍数+1 次!!!!!错误 比如  5 3 2 与2 3 0 只要一次
    正确: V2/V3不为整数时 算出倍数n1 从V1到V3到V2 要2×n1次
    V2/V3是整数时 算出倍数n2=(V2-E2)/V3 从V1到V2到V3 要2n2 +1 与2n1比较

    E3==V3 E2=0 1次
    E3=V3 E2是V3的倍数 V1给V3一次 V3倒给V2倍数次 V1再倒给V3一次 倍数+2次//错误
    正确
    误解:两种方向既能从V3倒给V2 也能从V2倒满后倒给V3  事物的双向性
    特例

    # include<stdio.h>
    int main()
    {
    int N,i,n1,n2,t,a[50]={0};
    int V1,V2,V3,E1,E2,E3;
    scanf("%d",&N);
    for(i=0;i<N;i++)
    {
    scanf("%d %d %d",&V1,&V2,&V3);
    scanf("%d %d %d",&E1,&E2,&E3);
    if(V1==E1+E2+E3)
    {
    if(E3==0 && E2==0)
    {
    a[i]=0;
    }
    else if(E3==V3 && E2==0)
    {
    a[i]=1;
    }
    else if(E3==0 && E2*1.0/V3 == int(E2*1.0/V3))
    {
    if(V2*1.0/V3==int(V2*1.0/V3))
    {
    n1= E2/V3; n2= (V2-E2)/V3
    if(n1>n2)
    {t=n1;n1=n2;n2=t;}
    a[i]=n1;
    }
    else
    {
    a[i]=E2*1.0/V3 +1;
    }
    }
    else if(E3 ==V3 && E2*1.0/V3 == int(E2*1.0/V3))
    {

    if(V2*1.0/V3==int(V2*1.0/V3))
    {
    n1= E2/V3; n2= (V2-E2)/V3
    if(n1>n2)
    {t=n1;n1=n2;n2=t;}
    a[i]=n1;
    }
    else
    {
    a[i]=E2*1.0/V3 +2;
    }

    }

    else
    {
    a[i]=-1;
    }
    }
    else
    a[i]=-1;
    }
    for(i=0;i<N;i++)
    {
    printf("%d ",a[i]);
    }
    return 0;
    }

     
  • 相关阅读:
    14组作品的优点与建议
    人月神话读后感1
    [置顶] acm入门
    POJ 3041 Asteroids 【匈牙利算法最小点覆盖】
    acm入门
    【转】acm入门
    POJ 1469 COURSES【匈牙利算法入门 二分图的最大匹配 模板题】
    二分图最大匹配总结【转自kb神】
    POJ 3041 Asteroids (匈牙利算法最小点覆盖)
    POJ 1258 AgriNet (最小生成树入门题目)
  • 原文地址:https://www.cnblogs.com/wshyj/p/6025156.html
Copyright © 2011-2022 走看看